PHP: hulp bij preg_replace

  • Onderwerp starter Onderwerp starter day1
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

day1

Gebruiker
Lid geworden
25 dec 2009
Berichten
10
Hey,

Ik ben bezig met het maken van een Wordpress site en ik heb een probleem met de navigatie.

Het probleem zit als volgt:
Ik heb de volgende buttons: Home, Student Housing, Job Housing, Contact.
Nu zijn er subcategorieën onder Student Housing en Job Housing.
Bij een a:hover over de button, krijg je doormiddel van een dropdown de subcategorieën te zien.
Nu is het probleem dat je in Wordpress de Parent(in dit geval dus Student Houding en Job Housing) niet niet aanklikbaar kan maken. Dit is natuurlijk onhandig, aangezien ik niets te zeggen heb ik de Parent.

Ik heb het volgende op internet gevonden om de Parents niet klikbaar te maken:
PHP:
<?php
function removeParentLinks() {
$pages = wp_list_pages('exclude=87&echo=0&title_li=');
$pages = explode("</li>", $pages);
$count = 0;
foreach($pages as $page) {
    if(strstr($page,"<ul>")) {
        $page = explode('<ul>', $page);
        $page[0] = str_replace('</a>','',$page[0]);
        $page[0] = preg_replace('/\<a(.*)\>/','',$page[0]);
            if(count($page) == 3) {
                $page[1] = str_replace('</a>','',$page[1]);
                $page[1] = preg_replace('/\<a(.*)\>/','',$page[1]);                
            }
        $page = implode('<ul>', $page);
    }
    $pages[$count] = $page;
    $count++;
}
$pages = implode('</li>',$pages);
echo $pages;
}
?>

Nu werkt dit verder prima, hij haalt namelijk de <a> tags om de Parent weg.
Maar het probleem is nu dat mijn menu niet meer gestyled is. Ik kan natuurlijk een stijl meegeven aan #menu li, maar dit kan helaas niet om andere redenen.
Ik had dus bedacht om de tag <a> te vervangen door <span> in het Parent element.

Dit kan in principe makkelijk, door in preg_replace() <span> te zetten.
Mijn php kennis is verder niet groot en ik heb geen idee wat er nou precies gebeurt in de snippet. Maar ik weet wel dat ik op deze manier alleen de <a> kan vervangen door <span> en niet de </a> kan vervangen door de </span>.

Wie kan mij helpen om het op de volgende manier te krijgen?:
Zo is het:
HTML:
<li><a>Student Housing</a>
<ul>
<li><a>Subelement</a></li>
</ul>
</li>

Zo moet het:
HTML:
<li><span>Student Housing</span>
<ul>
<li><a>Subelement</a></li>
</ul>
</li>


groet, Day1
 
Simpeler is:
str_replace("<a","<span",$pagina);
Nu zal de span wel dezelfde attributen hebben als de a, maar ik weet niet of dat een probleem is?

Edit:
Toegepast:
PHP:
<?php
function removeParentLinks() {
$pages = wp_list_pages('exclude=87&echo=0&title_li=');
$pages = explode("</li>", $pages);
$count = 0;
foreach($pages as $page) {
    if(strstr($page,"<ul>")) {
        $page = explode('<ul>', $page);
        $page[0] = str_replace('</a>','</span>',$page[0]);
        $page[0] = str_replace('<a','<span',$page[0]);
            if(count($page) == 3) {
                $page[1] = str_replace('</a>','</span>',$page[1]);
                $page[1] = str_replace('<a','<span',$page[1]);                
            }
        $page = implode('<ul>', $page);
    }
    $pages[$count] = $page;
    $count++;
}
$pages = implode('</li>',$pages);
echo $pages;
}
?>
 
Laatst bewerkt:
Bedankt man!
Nu werkt het top :).

Helemaal super!

--opgelost--
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan