Toon posts:

[PHP] alles achter/voor [T][/T] weghalen

Pagina: 1
Acties:

Verwijderd

Topicstarter
yo...

kheb met een scripje bezig en ik kom ergens niet uit :\
ik wil wat alles voor en na de [T][/T] komt verdwijnt. en wat tussen de [T][/T] blijft.

enigste wat ik heb is dit.
PHP:
1
2
3
<?
$str= preg_replace("/(\\[[tT]\])((.|\n)*)(\\[\/[tT]\])/U", "//2", $str);
?>

en verder kom ik nie ;(

ik ben hier absoluut geen held in.

Bvd.

Verwijderd

Topicstarter
*kick* :+

  • Onno
  • Registratie: Juni 1999
  • Niet online
code:
1
$str= preg_replace("/(\\[[tT]\])((.|\n)*)(\\[\/[tT]\])/U", "//2", $str);

Je doet een aantal dingen fout of niet zo handig.
code:
1
(\\[[tT]\]) en (\\[\/[tT]\])

Waarom zet je hier haakjes omheen? Is niet nodig, je wilt deze submatch immers verder niet onthouden. Dan "[tT]": het werkt zeker, maar het kan handiger. PCRE heeft een /i modifier om matches case insensitive te maken, dan kun je gewoon volstaan met "t".
code:
1
((.|\n)*)

PCRE heeft een /s modifier, waarmee een "." ook een newline matcht. Dan kun je "(.|\n)" dus gewoon door "." vervangen.
code:
1
"//2"

Daar gaat het fout. Je gebruikt de verkeerde slashes. :)

Nog makkelijker is het om in plaats van \\2, gewoon $2 te gebruiken.

En dat levert dan zoiets op:
code:
1
$str= preg_replace("/\\[t\](.*)\\[\/t\]/Uis", "$1", $str);

...en dan merk je dat het niet doet wat je wilt.

Want wat vervang je hier door iets anders? Bedenk dat eens. :)

  • tomato
  • Registratie: November 1999
  • Niet online
Zet er een ^.* voor en een .*$ achter en het zou al moeten werken (hoewel het iets subtieler kan...)

  • Kresh
  • Registratie: Mei 2000
  • Laatst online: 02-03 09:27
edit: hierboven staat het beter...
(als in: zo leer je er misschien ook iets van)

  • tomato
  • Registratie: November 1999
  • Niet online
Onno had wel zin om een verhaal te scrijven
Maar je vergat wel wat ik opmerkte :P

[edit] En snel er bij editen he :+

  • Onno
  • Registratie: Juni 1999
  • Niet online
Op dinsdag 27 november 2001 17:02 schreef tomato het volgende:

[..]

Maar je vergat wel wat ik opmerkte :P
Maar ik had op de edit knop gedrukt voordat jouw post er stond.. :)
Pagina: 1