lulu: Regulärer Ausdruck

Beitrag lesen

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