Menü anpassen mit preg_replace()

bluemirko

Grünschnabel
Hallo,

ich suche dringend nach einer Lösung, eine String-Variable mit preg_replace() auszufiltern. Ich arbeite gerade an einer Worpress-Installation (trotzdem denke ich, dass das im PHP-Forum besser aufgehoben ist), und möchte ein Menü in eine typische Footer-Navigation umwandeln.

Dazu habe ich mit der Funktion wp_nav_menu() das Menü in eine Variable $footer_menu ausgelesen, die folgende Werte zurückgibt:

Code:
<ul class="bla">
<li class="bla"> | <a href="#">Link 1</a></li>
<li class="bla"> | <a href="#">Link 2</a></li>
<li class="bla"> | <a href="#">Link 3</a></li>
</ul>

Danach habe ich das Ganze durch preg_replace() durchlaufen lassen. Mit den Expressions kenne ich mich nicht wirklich aus, muss ich zugeben:

Code:
echo preg_replace( array( '#^<ul[^>]*>#', '#</ul>$#', '#^<li[^>]*>#', '#</li>$#' ), '', $footer_menu, -1 );

Herauskommen sollte folgendes:

Code:
 | <a href="#">Link 1</a>
 | <a href="#">Link 2</a>
 | <a href="#">Link 3</a>

Leider wurde nur das <ul> und das erste <li> entfernt. Die restlichen <li>'s sind immernoch drin. Kann mir da mal jemand mit den Expressions helfen? Vielen Dank schon mal im Vorraus.
 
Ich kapier die conditional patterns nicht deswegen muss ich auch mit einem array arbeiten. Aber vermutlich gehts auch ohne.
PHP:
$foo = '<ul class="bla">
<li class="bla"> | <a href="#">Link 1</a></li>
<li class="bla"> | <a href="#">Link 2</a></li>
<li class="bla"> | <a href="#">Link 3</a></li>
</ul>';

$bar = preg_replace(array("/<(\/)?ul[^>]*>/","/<(\/)?li[^>]*>/"),"",$foo);

print_r($bar);
/*
 | <a href="#">Link 1</a>
 | <a href="#">Link 2</a>
 | <a href="#">Link 3</a>
*/
 
Ja ich hab die auch nicht verstanden, nur halbwegs rumprobiert ;)

Super, klappt wunderbar! Ich danke Dir für die schnelle Hilfe!
 
Zurück