login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Reguliere Expressies

Offline Arsenal - 09/07/2009 13:11 (laatste wijziging 13/07/2009 00:39)
Avatar van ArsenalNieuw lid Hallo,

m'n vraag lijkt mss ietwat op een vraag verder in dit forum gesteld, maar ik geraak er toch geen wijs uit.

ik ben momenteel een site aan het maken, en heb een menu die er ongeveer als volgt uitziet:

  1. <ul>
  2. <li class="active">Home</li>
  3. <li><a href="iets.php">AndereLink</a></li>
  4. <li><a href="iets.php?id=123">NogAndereLink</a></li>
  5. <li>
  6. ...
  7. </ul>


Nu zou ik graag kunnen zoeken op een bepaalde link (ik wil bv. het list-item met AndereLink vervangen door:

  1. <li class="active">AndereLink</li>
).

Dit is dus een typisch karweitje voor reguliere expressies. ik moet zoeken op:

  1. <li><a href='*****'>GekendeNaam</a></li>


Maar ik vind maar niet de juiste reguliere expressies om dan met preg_replace() te verwerken...

Iemand enig idee? 


Ibrahim schreef:
Maak gebruik van code-tags, dit is zo veel overzichtelijker voor je topic en kan men je beter helpen.

7 antwoorden

Gesponsorde links
Offline Koen - 09/07/2009 14:19
Avatar van Koen PHP expert Wat wil je nu precies vervangen en waarmee?
Offline Arsenal - 09/07/2009 14:21 (laatste wijziging 13/07/2009 00:40)
Avatar van Arsenal Nieuw lid ik wil bv.

  1. <li><a href="iets.php">AndereLink</a></li>


kunnen vervangen door

  1. <li class="active">AndereLink</li>


maar hetgeen tussen de href=" " staat kan varieren ...
Offline Koen - 09/07/2009 14:32
Avatar van Koen PHP expert Iets à la
  1. preg_replace('~<li><a href="([^"]+)">(.*?)</a></li>~si', '<li class="active">\\2</li>', $string);

Misschien? 
Offline Arsenal - 09/07/2009 14:55
Avatar van Arsenal Nieuw lid nope, dan vervangt hij niets...

Het lijkt me toch dat die reg exps voor veel mensen een struikelblok zijn, kunnen ze die niet gewoon wat eenvoudiger maken  
Offline rambo - 09/07/2009 17:33
Avatar van rambo HTML beginner
  1. preg_replace('<li><a href="(.+)">(.+)</a></li>', '<li class="active"><a href="$1">$2</a></li>', $string);


Dit werkt bij mij in ieder geval .
Offline Ibrahim - 13/07/2009 00:45
Avatar van Ibrahim PHP expert @Rambo, zou niet weten hoe die kan werken bij jou... Je mist een delimeter, dat zou geheid een fout veroorzaken. Ik geloof dat de < en > ook fouten zou veroorzaken zonder escapen, maar dat weet ik niet zeker.
Offline Richard - 13/07/2009 10:28
Avatar van Richard Crew algemeen Arsenal: ik denk dat je Koen's regex verkeerd uitvoert, of het resultaat verkeerd gebruikt, want het werkt prima hier...

En @Rambo: zoals Ibrahim al zegt, je mist delimiters, en je gebruikt .+ wat vreselijk is. In Koen's regex kan het nog net, maar ook daar zou ik zelf anders werken:

  1. preg_replace('~<li><a href="[^"]+">((?:(?!</a>).)+)</a></li>~si', '<li class="active">$1</li>', $string);
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.211s