phpbar.de logo

Mailinglisten-Archive

[php] Funktionsaufruf im ereg_replace

[php] Funktionsaufruf im ereg_replace

Ulf Wendel UW_(at)_NetUSE.DE
Tue, 11 Jan 2000 12:28:33 +0100


Marian Steinbach wrote:
> Dafür habe ich mir jetzt folgende Syntax ausgedacht, die nicht
> funktioniert:
> 
> $text = ereg_replace("###DOK ([0-9]+)###", DokumentLink("\\1"),
> $text);
...
> Funktioniert es generell nicht, als Parameter für die Funktion
> das Fundstück aus dem Such-Pattern mittels \\1, \\2 usw. zu
> verwenden? Oder mache icch nur etwas falsch?

Hallo Marian,

\\1 ist eine Referenz in einem regulären Ausdruck. Du kannst
diese Referenz nur innerhalb der REGEXP verwenden. Außerhalb
steht er nicht zur Verfügung. 

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);

Ulf

-- 
Ulf Wendel
NetUSE Kommunikationstechnologie GmbH
Siemenswall, D-24107 Kiel, Germany
Fon: +49 431 386435 00  --  Fax: +49 431 386435 99


php::bar PHP Wiki   -   Listenarchive