Huhu Markus,
ich hab bspw diesen String:
<div class='index_html_item_title'><a href='/projekte/esearch/' class='index_html_item_title'>Projekte - eSearch</a></div>mithilfte des von preg_replace entferne ich vorne das Projekte:
$str = preg_replace("/(.*)>(.*) - /", "$1>" ,$str);
Nun kommt es aber auch vor dass der String so aussieht:
<div class='index_html_item_title'><a href='/artikel/url_design_2/' class='index_html_item_title'>Artikel - Alternative URL-Designs machen die Website übersichtlicher - Teil 2</a></div>Hier kommt " - " 2x vor, er soll aber nur 1x das " - " entfernt werden, also das vordere.
Ich habe es bereits mit Limit 1 versucht:preg_replace("/(.*)>(.*) - /", "$1>" ,$str ,1);
aber das funktioniert nicht. Der Strich wird trotzdem entfernt.
Das Suchmuster versucht standardmäßig so viele Zeichen wie möglich zu erfassen.
Das zweite ".*" in Deinem Ausdruck frisst den ersten Strich, und der Strich den zweiten Strich.
Helfen könnte hier ein Modifier U für ungreedy.
Dann hättest Du
preg_replace("/(.*)>(.*) - /U", "$1>" ,$str ,1);
Soll diese Ersetzung nur einmal gemacht werden oder bei jedem Seitenaufruf erneut?
Falls letzteres der Fall ist wäre da noch Verbesserungspotential in diesem Ausdruck.
Viele Grüße
lulu
bythewaythewebsuxgoofflineandenjoytheday