Toon posts:

[php] preg_replace met /e

Pagina: 1
Acties:

Verwijderd

Topicstarter
Oke, ik zit het met het volgende probleem. Ik heb hier al heel lang dingen op uitgeprobeerd, maar het wil gewoon niet lukken.

ik heb de volgende code :
PHP:
1
<? $pattern = "/href=(\"|\')(((\?)|.|\n)*?)(\"|\')/ie"; echo  preg_replace($pattern,"'href=\"//2//4\"'",$line);?>

Nu komt er bij //4 een vraagteken als die gevonden wordt en anders niks.
Wanneer er een vraagteken wordt gevonden moet er een & teken komen en anders een vraagteken.
Ik heb al dit geprobeerd met een if constructie in de preg_replace maar dat lukt ook niet.
Help me, hoe dit te doen.

  • Grum
  • Registratie: Juni 2001
  • Niet online
waarom doe je nou die /e :?

Verwijderd

Verder bedoel je vast \\2 en \\4 ipv //2 en //4 :)

Verwijderd

Topicstarter
met /e bedoel ik dat je code kan gebruiken in de preg_replace, dus bijvoorbeeld een if.

Verwijderd

Op woensdag 24 april 2002 17:46 schreef volcano[gbb] het volgende:
met /e bedoel ik dat je code kan gebruiken in de preg_replace, dus bijvoorbeeld een if.
Ja, maar die gebruik je niet, dus wat is dan het nut?

  • Grum
  • Registratie: Juni 2001
  • Niet online
Dit lijkt mij toch echt niet 'valid' php code:
code:
1
"'href=\"//2//4\"'"

Verwijderd

Topicstarter
Oke, ik het nog proberen wat te verduidelijken :
PHP:
1
<?$pattern = "/href=(\"|\')(((\?)|.|\n)*?)(\"|\')/ie";echo  preg_replace($pattern,"'href=\"'. strtoupper('\\4') .'\"'",$line);?>

de /e staat dus (volgens mij gelijk aan eval) ervoor dat je dus bijvoorbeeld strtoupper kan gebruiken IN preg_replace.

Nou wil ik dus een if constructie inplaats van die strtoupper. Maar het lukt mij niet. Of op een andere manier dat wanneer een vraagteken wordt gevonden een & teken wordt afgedrukt of wanneer die niet is gevonden juist een vraagteken wordt afgedrukt.

  • Grum
  • Registratie: Juni 2001
  • Niet online
en iets met dit als replace pattern:
code:
1
'(strlen("\4") ? "?" : "" )'

Verwijderd

Topicstarter
Heel erg bedankt. Het werkt nu perfect. Ik had het niet tussen haakjes geplaats. Dat was mijn fout.
Pagina: 1