Ich möchte mir einen Textparser schreiben. Dieser soll einen Text nach Begriffen durchsuchen und diese durch einen Link ersetzen.
Allerdings soll jemand ohne Kenntnis von regulären Ausdrücken auch in der Lage sein, diese Funktion zu benutzen.
Ich hab mal ne Weile im Forum gesucht, doch ich habe nur Beiträge gefunden, die bei einer Wortersetzung durch Links nicht berücksichtigt haben, dass da genausogut Groß/Kleinschreibung, Satzzeichen oder ein zusammengesetztes Wort stehen kann.
Der Text soll nachher so aussehen:
"<link>Digital</link> Fernsehen ist toll. Manche Receiver sind <link>digital</link>. Diese heißen Digitalreceiver. Hier kommt <link>digital</link> in die Satzmitte."
Könnte mir da jemand vielleicht nen Tipp oder nen Link geben, wo es etwas in der Form gibt?
Allerdings soll jemand ohne Kenntnis von regulären Ausdrücken auch in der Lage sein, diese Funktion zu benutzen.
Ich hab mal ne Weile im Forum gesucht, doch ich habe nur Beiträge gefunden, die bei einer Wortersetzung durch Links nicht berücksichtigt haben, dass da genausogut Groß/Kleinschreibung, Satzzeichen oder ein zusammengesetztes Wort stehen kann.
PHP-Code:
<?
function text_replace($pattern, $replacement,$text) {
// Hier stimmt schon was nicht.
// Ersetzt werden sollen:
// "Digital " => "<link>Digital</link> "
// " digital " => " <link>digital</link> "
// " digital." => " <link>digital</link>."
// " digital, " => " <link>digital</link>, "
// für ":" etc auch
// Digitalreceiver soll nicht ersetzt werden.
$pattern = "/([^\w]?".$pattern."[,!\?\.\:]?[^\w]?)/iU";
// Diese pattern soll nun auf das $replacement angewendet werden,
// und zwar so, dass alle Vorkommen von "digital" genau wie oben durch "\\1" ersetzt werden.
// Dadurch muss der REGEX-unerfahrene Nutzer bei der Parameterübergabe nicht "\\1" schreiben.
// Das beugt auch Fehlern vor.
// Gewünscht: $replacement == "<link>\\1</link>";
$replacement = preg_replace($pattern,"#1#",$replacement);
$replacement = str_replace("#1#","\\\\1",$replacement);
return preg_replace($pattern, $replacement,$text);
}
$text = "Digital Fernsehen ist toll. Manche Receiver sind digital. Diese heißen Digitalreceiver. Hier kommt digital in die Satzmitte.";
$newtext = text_replace("digital",'<link>digital</link>',$text);
?>
"<link>Digital</link> Fernsehen ist toll. Manche Receiver sind <link>digital</link>. Diese heißen Digitalreceiver. Hier kommt <link>digital</link> in die Satzmitte."
Könnte mir da jemand vielleicht nen Tipp oder nen Link geben, wo es etwas in der Form gibt?
Kommentar