Einzelnen Beitrag anzeigen
  #1 (permalink)  
Alt 04-07-2007, 13:28
mydictionary
 Newbie
Links : Onlinestatus : mydictionary ist offline
Registriert seit: Sep 2006
Ort: Dortmund
Beiträge: 42
mydictionary ist zur Zeit noch ein unbeschriebenes Blatt
mydictionary eine Nachricht über ICQ schicken
Standard preg_replace problem?

Hallo,

ich habe eine Database, db.txt
--------------------------
<seat1.1|0>
<seat1.2|0>
<seat1.3|0>
<seat1.4|0>
<seat2.1|0>
<seat2.2|0>
<seat2.3|0>
<seat2.4|0>
<seat3.1|0>
<seat3.2|0>
<seat3.3|0>
<seat3.4|0>
<seat4.1|0>
<seat4.2|0>
<seat4.3|0>
<seat4.4|0>
----------------------------

eine Php Code,
---------------------------------------------------
$quelle = implode ("", file ("db.txt"));
$id="seat1.4";
$pattern = '/(<'.$id.'\|)([0-9]+)(>)/iUs';
$matNr="7063702";
echo preg_replace($pattern, '$1'.$matNr.'$3',$quelle,1);
---------------------------------------------------


es muss mit dieser Code, neben seat1.4 stehende 0 mit dem Wert $matNr gewächselt werden. Aber es funktioniert mit diesem regulären Ausdruck nicht so ganz. Kommt so ein Ergebniss raus:

------------------------
<seat1.1|0>
<seat1.2|0>
<seat1.3|0>
063702>
<seat2.1|0>
<seat2.2|0>
<seat2.3|0>
<seat2.4|0>
<seat3.1|0>
<seat3.2|0>
<seat3.3|0>
<seat3.4|0>
<seat4.1|0>
<seat4.2|0>
<seat4.3|0>
<seat4.4|0>
--------------------------

Also erste character von $matNr wurde gelöcht und ist so geblieben 063702. Wenn ich aber nach $1 leer Zeichen lasse, dann funktioniert es.

also:
Php Code,
---------------------------------------------------
$quelle = implode ("", file ("db.txt"));
$id="seat1.4";
$pattern = '/(<'.$id.'\|)([0-9]+)(>)/iUs';
$matNr="7063702";
echo preg_replace($pattern, '$1 '.$matNr.'$3',$quelle,1);
---------------------------------------------------

Ergebnis:
------------------------
<seat1.1|0>
<seat1.2|0>
<seat1.3|0>
<seat1.4| 7063702>
<seat2.1|0>
<seat2.2|0>
<seat2.3|0>
<seat2.4|0>
<seat3.1|0>
<seat3.2|0>
<seat3.3|0>
<seat3.4|0>
<seat4.1|0>
<seat4.2|0>
<seat4.3|0>
<seat4.4|0>
--------------------------


preg_replace oder mein regulären Ausdruck nimmt ein character weg. Ich habe nicht verstanden.

Könnte jemand mir dafür passende regulären Ausdruck vielleicht geben oder sagen woran das Problem liegen kann.

MfG
Mit Zitat antworten