|
|
 |

|

 |

| Community » PHP: Allgemeines Forum |
|
Zahl wird im replace verschluckt
|
Seitenanfang |
| Hej, sicherlich ist es auf meine Unwissenheit zurückzuführen. $zahl = 2;$str = '%status%'; $ptr = '/(.+)?%(.+?)%(.+)?/'; $rpl = '$1'.$zahl.'$3'; print preg_replace($ptr, $rpl, $str);
Warum wird im replace die Zahl nicht mit übergeben? Schreibe ich eine 2-stellige Zahl, wird nur die letzte ausgegeben. viele Grüße und Danke für den Tipp Thomas
Datum: 12.04.2006-16:19

|
re: Zahl wird im replace verschluckt
|
Seitenanfang |
| Hi, Du musst die RegEx ändern. Zuerst wird aus $zahl 2 und dann wird aus $1 $12. Da es den aber nicht gibt, wird er auch nicht ersetzt. Ich bin mir jetzt nicht genau sicher, wieviel Positionsparameter gesetzt werden können, aber scheinbar sind es weniger als $122. Mach mal folgenden Test, dann wird die Geschichte deutlich:
<?php $zahl = 2; $str = 'Ne so geht das nicht. %status% mal ersetzt.'; $ptr = '/(.+)?%.+?%(.+)?/'; $rpl = '$1'.$zahl.'$2'; $out = preg_replace($ptr, $rpl, $str); print "STATUS: $out"; ?>
Außerdem solltest Du nur die Teile klammern, die Du auch wirklich wieder verwenden willst.-uw
Datum: 12.04.2006-19:24

|
re: Zahl wird im replace verschluckt
|
Seitenanfang |
| Hej, danke für deine Nachricht. Ich bekomme leider nur "Status ersetzt." ausgegeben. <zitat> Außerdem solltest Du nur die Teile klammern, die Du auch wirklich wieder verwenden willst. </zitat> Das weiß ich. Ich brauche auch das Mittelstück der RegExp. Das Mittelstück ist gleich einem Tabellenfeld. Das kann halt ein Name oder eben auch eine Zahl sein. Beispiele $str = 'background:%color%;'; -> Wert #f90 $str = '%status%;'; -> Wert 1,2,3 zum Schluß setze ich das wieder zusammen. Aber bei Zahlen funktioniert es so nicht. Habe daher nun eine 2te RegExp noch eingesetzt. Klappt zwar, schöner wäre es aber, wenn man nur eine bräuchte. viele grüße Thomas
Datum: 12.04.2006-20:48

|
re: Zahl wird im replace verschluckt
|
Seitenanfang |
Hi,
Ich bekomme leider nur "Status ersetzt." ausgegeben.
Eben, das sollte Dir auch nur zeigen was da passiert ist, und jetzt mach' Dir mal Gedanken. ;-)Erklärt hab' ich's ja schon. Übrigens, ich regle solche Sachen anders:
HTML Teil: <div id=name style="background-color:NAME_BGCOL;"></div> ------------------------------------------------------ PHP Teil: $page = preg_replace("/NAME_BGCOL/", "#f90", $page);
-uw
Datum: 12.04.2006-23:58

|
|

|

|

|
 |

|

|
|