Moderator |
|
Ik weet niet precies of die expressie de lading altijd dekt ingeval een URL, zie ook dit topic.
Daarnaast wellicht enkele tips:
- gebruik enkele quotes voor strings, dan hoef je dubbele quotes ook niet te escapen
- het gebruiken van ( haken ) voor je regexp als delimiters heb ik nog niet eerder gezien, ik weet niet of dit een verstandige keuze is, aangezien deze binnen de regexp een speciaal (en ander) doel dienen; ik gebruik meestal het # hash karaker #
Dat gezegd hebbende, wat je wilt is een optioneel subpatroon, dit geef je aan met een vraagteken achter het patroon. Dus zoiets:
<?php
$text = preg_replace('#\[img(\040([a-z]+))?]http://([a-z0-9_\-\.\/:]+?)\[/(?:img)?]#i', '<img src="http://$3" class="$2" border="0" />', $text);
?>
<?php $text = preg_replace('#\[img(\040([a-z]+))?]http://([a-z0-9_\-\.\/:]+?)\[/(?:img)?]#i', '<img src="http://$3" class="$2" border="0" />', $text); ?>
EDIT: Het relevante deel is (\040([a-z]+))?, die \040 is een spatie.
De "indexen" van je subpatronen veranderen dan wel: de class is (altijd) te vinden op index 2 (ook al bestaat deze niet, de waarde is dan leeg) en de URL op index 3.
Pas je op deze invoer verder nog output escaping toe? Dat wil zeggen, draag je er zorg voor dat je invoer wordt ontdaan van passages die voor JavaScript / HTML aangezien kunnen worden? |