Hur skall jag göra för att få denna kod nedan att funka?
Jag får detta felmeddelande när jag kör den
Warning: preg_replace(): Delimiter must not be alphanumeric or backslash
Är det så att jag lägger till / på orden som skall matchas så funkar det men då byter den ju ut så att det skrivs ut på detta sätt /vad/
Någon som kan förklara vad det är för fel jag har gjort?
$varde = array();
$replacement = array();
$string = "vad är detta? detta är strängen vars vissa ord skall bytas ut";
$word[] = "vad";
$word[] = "skall";
foreach ($word as $nyckel => $varde)
{
$replacement[] = '<b>'.$varde.'</b>';
echo $replacement[$nyckel];
}
echo preg_replace($word,$replacement,$string);
Du måste ha en begränsare runt ditt reguljära uttryck.
Testa det här:
$string = "vad är detta? detta är strängen vars vissa ord skall bytas ut";
$word[] = "vad";
$word[] = "skall";
foreach ($word as $key => $val) {
$word[$key] = preg_quote($val);
}
$words = implode("|", $word);
echo preg_replace("/($words)/i", "<b>$1</b>",$string);
preg_quote() tar och backslashar alla tecken som kan användas i ett reguljärt uttryck. Om du t.ex. hade haft en punkt i $string så hade uttrycket antagligen krackat ihop. :)
implode() lägger till | efter varje ord i $string. Ett |-tecken är samma sak som OR eller || (i ett reguljärt uttryck), det separerar alla orden i uttrycket och kollar om något av dessa matchar $word.
Rätta mig gärna om jag har fel.
258 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849