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 · 365 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!