Alle <br /> mit preg_replace löschen...

tomate

Erfahrenes Mitglied
Hallo zusammen,

ich möchte mit preg_replace alle <br /> aus einem String löschen.

Code:
$string = '<a target="_blank" title="System- <br />querschnitt mit Zusatz- <br />funktionen und" rel="box" href="#">test</a>';

Ich bekomme das nicht hin. Kann mir da jemand weiterhelfen?

Viele Grüße!
Tomate
 
Hallo!

Ist es nicht etwas übertrieben für sowas reguläre Ausdrücke zu verwenden?

str_replace() sollte doch eigentlich auch zum Ziel führen:
PHP:
str_replace("- <br />", "", $string)

Gruss Dr Dau
 
Ich habe mein Problem nicht richtig beschrieben. Sorry.

Die <br /> dürfen nur in dem Bereich titel="......" entfernt werden.

In dem eigentlichen String steht viel mehr drin, als nur ein Link.
Der Link ist lediglich ein Auszug.

Danke, Tomate
 
Ist der Titel denn immer konstant?
Wenn dieser variabel wäre, könntest du doch auch locker mit str_replace arbeiten.
 
Was spricht hier gegen reguläre Ausdrücke?

Muss zwischen: "title=" und "rel=" stehen, dann alle <br /> ersetzen, fertig!
 
Tatü tata, eigentlich sollte ich ja für meine Uniklausur morgen lernen, aber die Ablenkung ist zu groß :)

PHP:
<?php
header('Content-Type: text/plain; charset="utf-8"');
$code = '<a target="_blank" title="System- <br />querschnitt mit Zusatz- <br />funktionen und" rel="box" href="#">test</a><a target="_blank" title="System- <br />querschnitt mit Zusatz- <br />funktionen und blubb" rel="box" href="#">test</a>';

// Alle title="" Tags raussuchen
preg_match_all('~title="[^"]*"~iu', $code, $search, PREG_PATTERN_ORDER);

// Die gefundenen Tags sind dank PATTERN_ORDER am Index 0 abgelegt
$search = $search[0];

print_r($search);

// Über die title-Attribute iterieren und dabei alle <br /> Tags ersetzen
$replace = array();
foreach($search as $title)
{
        $title = str_replace('<br />', '', $title);
        
        array_push($replace, $title);
}

// Jetzt noch auf dem ursprünglichen String die alten title-Tags mit den neuen ersetzen
$code = str_replace($search, $replace, $code);
print_r($code);
?>
 
Zurück