learnMedlem sedan jan. 20051 143 inlägg
Jag har ett problem med preg_replace när jag använder backreference $.
Följande script...
$value= $_POST["namn"];
$str = "<input type=\"text\" name=\"namn\" value=\"\" />";
$new_str = preg_replace("/(\<input(.*?)name\=\"namn\"(.*?)value\=\")(\")/", "$1$value$4", $str);
echo $str;
echo "<br>";
echo $new_str;
...får följande resultat när $_POST["namn"] = "Oskar":
<input type="text" name="namn" value="" />
<input type="text" name="namn" value="Oskar" />
Precis som jag önskar!
MEN om $_POST["namn"] = "666" (eller andra siffror) så blir det knas:
<input type="text" name="namn" value="" />
66" />
Jag har lyckats luska ut att det har att göra med min backreference, den blir ju i detta fall så här:
$new_str = preg_replace("/(\<input(.*?)name\=\"namn\"(.*?)value\=\")(\")/", "$1666$4", $str);
Eller? Hur kan jag komma runt detta?
learnMedlem sedan jan. 20051 143 inlägg
Någon som vet?
Förmodligen är det en jätteenkel lösning...men jag kommer inte på den....
Som sagt funkar det kanon så länge $_POST["namn"] börjar med en bokstav, men är det en siffra blir det knaaaas!
Snälla :)
learnMedlem sedan jan. 20051 143 inlägg
learn skrev:
Någon som vet?
Förmodligen är det en jätteenkel lösning...men jag kommer inte på den....
Som sagt funkar det kanon så länge $_POST["namn"] börjar med en bokstav, men är det en siffra blir det knaaaas!
Snälla :)
Hur ska jag göra? Det står helt still...! :(
learnMedlem sedan jan. 20051 143 inlägg
Problemet ligger kanske inte i preg_replace utan hanteringen av strängen (som i detta fall blir siffror)... A, jag har iaf ingen aning om hur man kan lösa detta...!
Det måste ju finnas någon PHP-smart här omkring? ;)
Peter SMedlem sedan dec. 20025 484 inlägg
learnMedlem sedan jan. 20051 143 inlägg
Peter S skrev:
${1}$value$4
Hmm, nä. Då följer inte den första backreferencen $1 med ens när $_POST["namn"] börjar med en bokstav....
$replacement = "${1}$value$4";
Är det någon speciell modifiersom krävs för detta?
learnMedlem sedan jan. 20051 143 inlägg
Ahh. Detta verkar funka:
$replacement = '${1}'.$value.'$4';
Det var alltså "fnuttarna" det var fel på... :)
Tack!