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
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
Kommentar