Ich benutze preg_match, um exakte Wörter und Sätze zu finden und sie durch AHREF Links zu ersetzen. Ich benutze Wortgrenze Regex, aber es funktioniert nicht richtig. Es passt in Worte.Pregmatch mit Word-Grenze Regex funktioniert nicht wie erwartet
Beispiel: "Ringe" wird auf "Ohr Ringe" angepasst. Ich will das nicht. Ich will nur 'Ringe'
Ist meine preg_match Regex falsch?
$keyword="rings";
$text="women's earrings, clothing rings, earrings, rings";
if (preg_match("/\b$keyword\b/i",$text))
Kursiv sollen unter
output = "women's ear*rings*, clothing *rings*, ear*rings*, *rings*"
erwartet = "women's earrings, clothing *rings*, earrings, *rings*"
Update Ich denke, das Problem in der Ersetzen-Funktion ist unterstrichen werden:
function str_replace_first($from, $to, $subject)
{ $from = '/'.preg_quote($from, '/').'/';
return preg_replace($from, $to, $subject,2);
}
if (preg_match_all("/\b$keyword\b/i",$text,$matches)>0)
{
print_r($matches)."<p> ";
$ahref="<a href='$anchor_url'>$keyword</a>";
$text=str_replace_first($keyword, $ahref, $text);
} ELSE {
echo "<p>no Match<br>";
}
echo $text;
Ist Ihre Frage nicht mehr zum Ersetzen als nur zum Abgleich? Sind Sie sicher, dass es nicht der Code danach ist (Sie haben nicht gezeigt), der Aufmerksamkeit benötigen könnte? – mario
ja aktualisiert den Code. Ich denke, das Problem ist in der Replace-Funktion – hjayne
Versuchen Sie 'preg_replace ($ aus, $ zu, $ Subjekt, 1);' (Sie haben '2' - ersetzen Sie zwei Treffer). –