Mailinglisten-Archive |
Ulf Wendel schrieb: > > Deine Funktion erhält deswegen als Parameter den String "\1" und > liefert ein entsprechendes Ergebnis. Mit einem Zweizeiler kannst > Du das Problem umgehen: > > if (ereg("###DOK ([0-9]+)###", $text, $regs)) > $text = ereg_replace($reg[1], DokumentLink($regs[1]), $text); Hallo Ulf und Danke erstmal! Schade, das es mit der Syntax, die ich gerne benutzt hätte nicht geht. Das ist wohl was für den PHP4 Wunschzettel... Ich habe es jetzt mit if (ereg("(###DOK ([0-9]+)###)", $text, $regs)) $text = str_replace($regs[1], DokumentLink($regs[2]), $text); ausprobiert. Bei dem von Dir vorgeschlagenen Pattern wird nur nur die Zahl in dem ###DOK 24### ersetzt. Das Problem ist jetzt: Es wird nur ein Link pro $text übersetzt. Die variable $text enthält aber in der PRaxis längere Dokumente, die gerne auch mal zwei und mehr Links enthalten können. So etwas ähnliches, wie es jetzt vorgeschlagen hast, habe ich einmal in einer While-Schleife gemacht. Ein Test hat gezeigt: Bei nur zehn Links dauert das Parsen eines etwa 10K kleinen Dokuments ganze 4 Sekunden (400MHz Celeron). Ich brauche also irgendeine andere Möglichkeit... Kriegt man wirklich nicht das Fundstück aus einem ereg_replace in einem Funktionsaufruf eingebaut? Weiterhin optimistisch... Marian
php::bar PHP Wiki - Listenarchive