[php] ' in preg_replace

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Speedener
  • Registratie: September 2000
  • Laatst online: 12:54
Ik heb een preg replace. Maar nu wil ik dat bij de 3e var(dus waar nu nog (.*) staat) dat daar alleen maar http://www.url.nl/plaatje.ext kan staan. Maar vooral geen ' (aanhalingsteken(s)).

ik heb nu dir:
PHP:
1
preg_replace("/\\[img=([0-9]{1,3}),([0-9]{1,3})\](.*)\\[\/img\]/Uis", "[img]'\\3'[/img]", $text[$i]);

ik heb al op http://www.php.net/manual/en/pcre.pattern.syntax.php gekeken maar daar kom ik niet echt uit.

edit: of natuurlijk htmlentities of stripslashes, maar ik heb wat geklooit en die krijg ik niet in die preg replace.

[ Voor 20% gewijzigd door Speedener op 23-01-2003 09:51 ]

LG Therma V Split WP: HU143MA.U33-HN1636M NK5


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Wat heb je "al" geprobeerd?

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


Acties:
  • 0 Henk 'm!

  • Speedener
  • Registratie: September 2000
  • Laatst online: 12:54
drm schreef op 23 January 2003 @ 09:51:
Wat heb je "al" geprobeerd?
Zie mijn edit.

LG Therma V Split WP: HU143MA.U33-HN1636M NK5


Acties:
  • 0 Henk 'm!

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 11-09 11:19

chem

Reist de wereld rond

geen aanhalingstekens?
Dat lijkt me dan knap vervelend voor de gebruikers. Kan je niet beter er een /Uise van maken, en vv addslashes('\\3'); oid ?

Klaar voor een nieuwe uitdaging.


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16-09 09:15

Janoz

Moderator Devschuur®

!litemod

Als dat het enige is waar je hebt gekeken... Met 2 klikken vanaf die pagina kwam ik op een pagina waar een hele discussie liep over hoe een url goed te matchen!

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Speedener
  • Registratie: September 2000
  • Laatst online: 12:54
chem schreef op 23 January 2003 @ 09:56:
geen aanhalingstekens?
Dat lijkt me dan knap vervelend voor de gebruikers. Kan je niet beter er een /Uise van maken, en vv addslashes('\\3'); oid ?
Maar aanhalingstekens zijn toch niet nodig in een img. daarbij wil ik ze verbieden omdat er op een ander forum (want daar gaat het nu ff over) iemand zoiets als dit kon doen:
code:
1
2
3
[img]http://www.domein.nl/pic.ext' onmouseover='goto:blabla[/img]
dan krijg je:
[img]'http://www.domein.nl/pic.ext'[/img]


dat goto is verkeerd, maar het kwam erop neer dat als je er met je muis over ging dat je dan gestuurd werd naar een adnere pagina.

LG Therma V Split WP: HU143MA.U33-HN1636M NK5


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Ik doe het zo:
PHP:
1
2
3
4
$content = nl2br(htmlspecialchars($content));
$content = preg_replace('/\\[img\](http:\/\/)?(.+)\\[\/img]/',
                        '[img]"http://\\2"[/img]',
                        $content);

Binnen HTML gebruik ik trouwens altijd dubbele quotes; in $content worden die dus door de htmlspecialchars omgezet naar " zodat ze uiteindelijk geen kwaad meer kunnen. Inplaats van (.+) zou je ook kunnen matchen op geldige karakters voor een URL, moet je even opzoeken welke dat precies zijn.
Mijn oplossing is ook nog niet perfect (en op het internet vind je 1001 verschillende manieren die stuk voor stuk ook niet perfect zijn), en dus blijf ik er ook aan sleutelen :)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Speedener
  • Registratie: September 2000
  • Laatst online: 12:54
Crisp, dank je, ik heb jou mannier gebruikt ;)

LG Therma V Split WP: HU143MA.U33-HN1636M NK5


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Speedener schreef op 23 January 2003 @ 10:50:
Crisp, dank je, ik heb jou mannier gebruikt ;)
Ik heb nog een beetje zitten frunniken eraan en heb er nu dit van gemaakt; kan het helaas hier niet testen:
PHP:
1
2
3
$content = preg_replace('/\\[img=([0-9]{1,3}),([0-9]{1,3})\](http:\/\/)??(.+)\\[\/img]/Ui',
                        '[img]"http://$4"[/img]',
                        $content);

Intentionally left blank

Pagina: 1