Yo tengo, por ejemplo una foto:
Citar[img]http://www.google.com.ar/image.jpg|500|500[/img]
y quiero que la salida sea:
Citar<img src="http://www.google.com.ar/image.jpg" width="500" heigth="500">
Entonces, con el siguiente código (porque estoy aprendiendo a usar preg_match_all), intento ver que me devuelve en el array $data:
<?php
$cadena = "[img]http://www.google.com.ar/image.jpg|500|500[/img]";
if(preg_match_all('/\[img\](.*?)\[/img\]\/i', $cadena, $data)) {
print_r($data);
}
?>
pero el problema es que me da
ERROR:
CitarWarning: preg_match_all() [function.preg-match-all]: Unknown modifier 'a' in public_html/Pruebas/prueba.php on line 4
preg_match_all('/\[img\](.*?)\[\/img\]/i', $cadena, $data)
;)
Sip, el error es que tienes que escapar las barras, recuerdas que los delimitadores son / y /, que indican donde empiezan y donde terminan...
Aquí otra versión un poco mas mejorada...
<?php
preg_match_all('/\[img\]([^\|]+)\|(\d+)\|(\d+)/i', '[img]http://www.google.com.ar/image.jpg|500|500[/img]', $result, PREG_SET_ORDER);
print_r($result);
?>
Salida:
Array
(
[0] => Array
(
[0] => [img]http://www.google.com.ar/image.jpg|500|500
[1] => http://www.google.com.ar/image.jpg
[2] => 500
[3] => 500
)
)