phpbar.de logo

Mailinglisten-Archive

[php] Funktionsaufruf im ereg_replace

[php] Funktionsaufruf im ereg_replace

Marian Steinbach marian_(at)_sendung.de
Tue, 11 Jan 2000 13:20:53 +0100


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