2010-12-16 15 views
27

quiero hacerlo de modo que cualquier ocurrencia de una imagen se envuelve con un enlace a la fuente de imagenescritura de expresiones regulares en PHP para envolver <img> con <a>

¿Cómo puedo escribir un patrón, en PHP para que yo puede encontrar estas variaciones, que se encuentran dispersos en todo el texto procedentes de la base de datos:

<img src='/dir/dir2/image1.jpg' alt='blah blah blah'> 
<img src="/dir/dir2/image2.jpg" alt="blah blah blah" /> 
<img src="/dir/dir2/image3.jpg" /> 

En todos los casos, quiero que aparezcan dentro de un enlace.

+1

Así que está convirtiendo '' en ' '? –

+7

Obligatorio: http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 :) (En su caso, es probablemente manejable, pero Cthulu aún se aplica .) – deceze

+0

@SHiNKiROU: Sí, lo es. – Jonah

Respuesta

22

preg_replace("{<img\\s*(.*?)src=('.*?'|\".*?\"|[^\\s]+)(.*?)\\s*/?>}ims", '<a href=$2><img $1src=$2 $3/></a>', $str)

maneja todos los casos que no son prácticos

alt text

+0

Gracias SHiNKiROU eres mi héroe – gio

+2

Aghghghghhhh !!! ¡Análisis de HTML basado en Regex! – Jonah

5

mayo recomiendo el uso de jQuery y utilizar este fragmento en su lugar, debería ser más fácil (y todos nos gusta jQuery para la fuerza bruta ningún problema ;])

$('img').wrap(function(){ return '<a href="' + this.src + '"></a>'; }); 

o es

$('img').wrap(function(){ return '<a href="' + $(this).attr('src') + '"></a>'; }); 

veces De todas formas, que se había divertido, usando jQuery para manipular el clientside DOM;)

+2

Estoy votando a los otros dos por usar PHP para solucionar el problema, pero en serio, el ajuste de elementos DOM como este es bastante fácil en jQuery, requiere poco esfuerzo de tu parte y te permite enfocar más estrechamente las áreas para que sean " alterado "si de repente decides que ... por ejemplo, las imágenes del encabezado ... no necesitan ser seleccionadas. No digo que el mío sea necesariamente el camino a seguir, sino que solo señalo que la solución incómoda ofrece algunos beneficios. – jcolebrand

+0

Relacionado: * [jQuery] (http://meta.stackexchange.com/questions/19478/the-many-memes-of-meta/19492#19492) * –

Cuestiones relacionadas