perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 28
Click for quality!




10.02.2012 / 08:45

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  PHP: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


BeitragZahl 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

Beitragre: 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

Beitragre: 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

Beitragre: 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

-






-
-