Toon posts:

[php] preg_replace werkt niet helemaal 100%

Pagina: 1
Acties:

Verwijderd

Topicstarter
waarom werkt dit 1 op de 20 x niet??
PHP:
1
2
3
<?
$regel = preg_replace("/\[profiel=(.*?)\]/i", " <A HREF='http://www.vote4me.nl/p/\\1' target='_blank'>\\1</a> ", $regel);
?>

beetje vreemd, hij doet het bijna altijd, maar heel af en toe niet????

de bedoeling is dus dat ie van
"[profiel=ludohelder]"
dit maakt
"<A HREF='http://www.vote4me.nl/p/ludohelder'>ludohelder</a>"

Verwijderd

Backslash moet je dubbel escapen als je " gebruikt :)

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 23:41
Op woensdag 23 januari 2002 16:07 schreef Zef het volgende:
Backslash moet je dubbel escapen als je " gebruikt :)
Doet ie toch ook :?

Verwijderd

Ik bedoel dit:
PHP:
1
2
3
<?
$regel = preg_replace("/\\[profiel=(.*?)\\]/i", " <A HREF='http://www.vote4me.nl/p/\\1' target='_blank'>\\1</a> ", $regel);
?>

(voor de [)

  • tomato
  • Registratie: November 1999
  • Niet online
Misschien staat er een enter in je invoer (die pakt een . namelijk niet)?

Ik zou er dan gelijk dit van maken:
code:
1
/\\\[profiel=([^\\]]*)\\]/i

Zef heeft ook (een beetje) gelijk. Eigenlijk zou je de \ moeten escapen, maar omdat een [ of ] voor PHP geen speciale betekenis heeft gebeurt er niets met de combinatie \\[ of \] en komt de \ toch gewoon door.

Ik moet zeggen dat ik ook niet goed weet wat ik nou duidelijker moet vinden: consequent redeneren en altijd escapen, of escapes weglaten waar mogelijk zodat je pattern nog een beetje leesbaar blijft...

Verwijderd

Op woensdag 23 januari 2002 16:46 schreef tomato het volgende:
Zef heeft ook (een beetje) gelijk. Eigenlijk zou je de \ moeten escapen, maar omdat een [ of ] voor PHP geen speciale betekenis heeft gebeurt er niets met de combinatie \\[ of \] en komt de \ toch gewoon door.
Uit ervaring weet ik dat het vetgedrukte stuk "zou moeten gebeuren" moet zijn. In sommige (oudere) PHP versies gaat dit (helaas) soms fout. ;(

edit:
Nu ik er over nadenk, het is een hele tijd geleden dat ik daar problemen mee had, ik weet niet helemaal zeker of het hierdoor opgelost werd...

Verwijderd

Topicstarter
oke thnx gasten, ik zal kijken of het werkt.... zo te zien wel....

Verwijderd

Topicstarter
nee, het werkt nog steeds niet

deze doet ie bijv niet:

[profiel=Miss-Drachten]

komt dat misschien door die - ??

  • tomato
  • Registratie: November 1999
  • Niet online
Het komt iig niet door de regex die je net gaf.

Doe je nog andere dingen met de data?

  • tomato
  • Registratie: November 1999
  • Niet online
<layout-fuckup-mode>
code:
1
perl -w -e "print 'match' if '[profiel=Miss-Drachten]' =~ /^\\[profiel=[^\]]*\]$/i"

Geeft gewoon 'match', dus met de regex is niets mis...

</layout-fuckup-mode>

Verwijderd

Topicstarter
kijk anders ff hier

  • tomato
  • Registratie: November 1999
  • Niet online
ludohelder: kijk anders ff hier
Miss-Drachten doet het daar wel :?

  • tomato
  • Registratie: November 1999
  • Niet online
Ligt het niet aan het gebruik van '[profile=.]' ipv '[profiel=.]' ?

Verder zie ik dat je alle berichten eerst achter elkaar zet en dan pas de regex er overheen haalt. Misschien is dat iets sneller (betwijfel dat eigenlijk zelfs), maar ik zag dat het een keer fout ging waar iemand de afsluitende ] was vergeten (link ging door tot in het volgende berichtje).

Verwijderd

Topicstarter
Op woensdag 23 januari 2002 17:57 schreef tomato het volgende:

[..]

Miss-Drachten doet het daar wel :?
ja dat is nou juist het probleem, de ene x doet ie het wel en als ik dan de page een paar x refresh dan doet ie het bij het zelfde berichtje weer niet...?

Verwijderd

Topicstarter
Op woensdag 23 januari 2002 18:04 schreef tomato het volgende:
Ligt het niet aan het gebruik van '[profile=.]' ipv '[profiel=.]' ?

Verder zie ik dat je alle berichten eerst achter elkaar zet en dan pas de regex er overheen haalt. Misschien is dat iets sneller (betwijfel dat eigenlijk zelfs), maar ik zag dat het een keer fout ging waar iemand de afsluitende ] was vergeten (link ging door tot in het volgende berichtje).
nee, want daarvoor stond er profiel en deed ie het ook niet,
maarre als je de afluitende ] vergeet dan moet ie toch eigenlijk helemaal niets vervangen?

btw. dan geeft ie toch gewoon "[profiel=ludo" terug....
edit:

net ff gestest, niet dus....

Verwijderd

Topicstarter
^^^^^^^^^^^^^^^^^^^^^

enne, wat moet ik doen om te zorgen dat als je de tag niet goed ufsluit (dus bijv. [profiel=ludo ) dat ie er dan nix mee doet, maar hem gewoon zo laat?

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

ludohelder:
^^^^^^^^^^^^^^^^^^^^^

enne, wat moet ik doen om te zorgen dat als je de tag niet goed ufsluit (dus bijv. [profiel=ludo ) dat ie er dan nix mee doet, maar hem gewoon zo laat?
Je regex aanpassen. Als de syntax niet correct is maar wel wordt geaccepteerd door je regex klopt de regex niet ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • tomato
  • Registratie: November 1999
  • Niet online
ludohelder: enne, wat moet ik doen om te zorgen dat als je de tag niet goed ufsluit (dus bijv. [profiel=ludo ) dat ie er dan nix mee doet, maar hem gewoon zo laat?
Wat ik net al zei: niet eerste de berichten aan elkaar plakken en dan regexen, maar eerst regexen en dan de berichten pas aan elkaar plakken.
Pagina: 1