derflo
14-02-2006, 21:08
Hallo
Ich habe da ein Kleines Problem mit einem Regulären ausdruck.
vorweg, ich bin noch php neuling.
So folgendermaßen sieht die Funktion aus die in einer html Datei nach einem html Kommentar sucht
protected function _initTemplate()
{
preg_match_all("/<!--\s+BEGIN\s+(.*)?\s+-->(.*)<!--\s+END\s*(\\1)\s+-->/ms",$this->t,$ma);
for ($i = 0; $i < count($ma[0]); $i++)
{
$search = "/\s*\n*<!--\s+BEGIN\s*(" . $ma[1][$i] . ")?\s*-->(.*)<!--\s*END\s*(" . $ma[1][$i]. ")\s*-->\s*\n*/ms";
$replace = $this->delimiterStart . $ma[1][$i] . $this->delimiterEnd;
$this->bl[$ma[1][$i]] =& new $this->className('',$this->params);
$this->bl[$ma[1][$i]]->loadTemplateContent($ma[2][$i]);
$this->t = preg_replace($search,$replace,$this->t);
}
}
So sieht das html aus
<table>
<tr><th>Arbeitsplatz NR</th><th>Hardwaretauglich für:</th></tr>
<!-- BEGIN hardware -->
<tr><td>{apnr}</td><td>{tauglichkeit}</td></tr>
<!-- END hardware -->
</table>
<p>Folgende weitere Arbeitsplätze stehen nach einem Umbau zur verfügung</p>
<table >
Erst war es so das nach <!-- genau ein Leerzeichen kommen musste bevor man BEGIN schreiben konnte, hinter hardware genau das selbe.
Nun habe ich den Regulären ausdruck so geändert das die Leerzeichen davor keine rolle spielen, sprich es ist egal wie viele man macht.
Allerdings klappt das irgentwie nicht hinter END hardware, es klappt einfach nicht.
Könnt ihr mir helfen?
Ich habe da ein Kleines Problem mit einem Regulären ausdruck.
vorweg, ich bin noch php neuling.
So folgendermaßen sieht die Funktion aus die in einer html Datei nach einem html Kommentar sucht
protected function _initTemplate()
{
preg_match_all("/<!--\s+BEGIN\s+(.*)?\s+-->(.*)<!--\s+END\s*(\\1)\s+-->/ms",$this->t,$ma);
for ($i = 0; $i < count($ma[0]); $i++)
{
$search = "/\s*\n*<!--\s+BEGIN\s*(" . $ma[1][$i] . ")?\s*-->(.*)<!--\s*END\s*(" . $ma[1][$i]. ")\s*-->\s*\n*/ms";
$replace = $this->delimiterStart . $ma[1][$i] . $this->delimiterEnd;
$this->bl[$ma[1][$i]] =& new $this->className('',$this->params);
$this->bl[$ma[1][$i]]->loadTemplateContent($ma[2][$i]);
$this->t = preg_replace($search,$replace,$this->t);
}
}
So sieht das html aus
<table>
<tr><th>Arbeitsplatz NR</th><th>Hardwaretauglich für:</th></tr>
<!-- BEGIN hardware -->
<tr><td>{apnr}</td><td>{tauglichkeit}</td></tr>
<!-- END hardware -->
</table>
<p>Folgende weitere Arbeitsplätze stehen nach einem Umbau zur verfügung</p>
<table >
Erst war es so das nach <!-- genau ein Leerzeichen kommen musste bevor man BEGIN schreiben konnte, hinter hardware genau das selbe.
Nun habe ich den Regulären ausdruck so geändert das die Leerzeichen davor keine rolle spielen, sprich es ist egal wie viele man macht.
Allerdings klappt das irgentwie nicht hinter END hardware, es klappt einfach nicht.
Könnt ihr mir helfen?