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 :)
6 svar · 359 visningar · startad av learn
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?
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 :)
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...! :(
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? ;)
${1}$value$4
${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?
Ahh. Detta verkar funka:
$replacement = '${1}'.$value.'$4';
Det var alltså "fnuttarna" det var fel på... :)
Tack!