vincentVirgile
New member
OS: Suse
PHP: version 5.2
Scenario:
Ich habe ein text wo das suchwort ersatzt werden muss durch die werte von $replace. Nun es konnte passieren das ein bild, eine e-mail adresse oder irgendwelche andere tag die charcter combination hat worauf ich gerade suche.
Das problem ist klar: wenn ich suche nach "xxx" und in mein text steht eine verweisung nach xxx (<a href="xxx.html">Hallo Welt in xxx) dan würde auf basis von eine klasische str_replace($search,"<span class=\"markSearchString\">$search</span>",$caption); das ganze schlecht aus sehen.
Dieses beispiel würde so aus sehen:
<a href=<span class="markSearchString">xxx</span><span class="markSearchString">xxx</span>.html">
mmm... nicht gerade was ich mich wunsche.
also dachte ich, eine regular expression konnte dies lösen, nun die expression hat eine voraussetzung:
Logische Ausdruck:
A)Suche nach alles was mit < anfangt und mit > endet, dazwischen darf egal was stehen!
B) ersetzte alle werten die gleich sind an xxx aber nicht gleich an A.
Regulare Ausdruck:
A) [^<*>] //Alles was innerhalb <> steht ignorieren
B) [$search] //erlauben
zusammen als regulare ausdruck
([^<*>][$search])
oder
preg_replace("([^<*>][$search])" ,"<span class=\"markSearchString\">$search</span>", "<a href="xxx.html">Hallo Welt in xxx")
Wie gesagt, regex sind nicht meine starke, lerne jedoch gerne dazu...
Die letztendliche Frage
Was stimmt nicht an meine Logik?
wenn ich es so mache ersetzt er die sache aber verdoppelt meine menge an xxx und wenn ich nach meine regexpattern[$search]{3}, dazu setze, macht er genau dasselbe wie str_replace... :icon8:
das endresult sollte jedoch so aussehen:
<a href="xxx.html">Hallo Welt in <span class=\"markSearchString\">xxx</span>

Die Quelcode
PHP: version 5.2
Scenario:
Ich habe ein text wo das suchwort ersatzt werden muss durch die werte von $replace. Nun es konnte passieren das ein bild, eine e-mail adresse oder irgendwelche andere tag die charcter combination hat worauf ich gerade suche.
Das problem ist klar: wenn ich suche nach "xxx" und in mein text steht eine verweisung nach xxx (<a href="xxx.html">Hallo Welt in xxx) dan würde auf basis von eine klasische str_replace($search,"<span class=\"markSearchString\">$search</span>",$caption); das ganze schlecht aus sehen.
Dieses beispiel würde so aus sehen:
<a href=<span class="markSearchString">xxx</span><span class="markSearchString">xxx</span>.html">
mmm... nicht gerade was ich mich wunsche.
also dachte ich, eine regular expression konnte dies lösen, nun die expression hat eine voraussetzung:
Logische Ausdruck:
A)Suche nach alles was mit < anfangt und mit > endet, dazwischen darf egal was stehen!
B) ersetzte alle werten die gleich sind an xxx aber nicht gleich an A.
Regulare Ausdruck:
A) [^<*>] //Alles was innerhalb <> steht ignorieren
B) [$search] //erlauben
zusammen als regulare ausdruck
([^<*>][$search])
oder
preg_replace("([^<*>][$search])" ,"<span class=\"markSearchString\">$search</span>", "<a href="xxx.html">Hallo Welt in xxx")
Wie gesagt, regex sind nicht meine starke, lerne jedoch gerne dazu...
Die letztendliche Frage
Was stimmt nicht an meine Logik?
wenn ich es so mache ersetzt er die sache aber verdoppelt meine menge an xxx und wenn ich nach meine regexpattern[$search]{3}, dazu setze, macht er genau dasselbe wie str_replace... :icon8:
das endresult sollte jedoch so aussehen:
<a href="xxx.html">Hallo Welt in <span class=\"markSearchString\">xxx</span>

Die Quelcode
PHP:
<?php
$search = "xxx" ;
$subject = "Hello world in PHP and xxx is in my text search for xxx and replace it with a span or just <a href=\"xxx.html\">click here</a> for more information" ;
$pattern = "([^<*>][$search])" ;
$replace = "<b>$search</b>" ;
$newText= preg_replace($pattern, $replace, $subject) ;
print($newText);
?>
Danke vielmals,
Vincent
Zuletzt bearbeitet: