2013-05-31 3 views
1

Замените все теги img тегом привязки, где значение атрибута img src должно быть значением атрибута href метки привязки. Я не мог понять, как написать шаблон для соответствия целому и заменить тег img и вернуть тег привязки с значением href в качестве значения атрибута src тега img в следующей функции процесса.замените все теги img на тег привязки

Я попытался ниже:

$pattern = '/<img[^>]+>/i'; 
$callback_fn = 'process'; 
$content = preg_replace_callback($pattern, $callback_fn, $string); 
function process($matches) 
{ 
     print_r($matches); 
    return "&nbsp;&nbsp;<a href='http://mywebsite.com/".$matches[0]."'> <font color ='black' >View Image</font>&nbsp;&nbsp;</a>"; 
}  
echo $content; 

, например:

$string = "this is dummy string <img src="imageone.jpg" alt="" /> this is another sentesnces <img src="imagetwo.jpg" /> this is third one"; 

Выход есть:

this is dummy string View Image this is another sentesnces View Image this is third one 

Здесь Просмотр изображения Ссылка с

http://mywebsite.com/<img src="imageone.jpg" alt="" /> 

Но я хочу это:

http://mywebsite.com/imageone.jpg 
+0

Не делайте этого вручную, используйте более подходящие инструменты для вашей работы: посмотрите расширение php DOM. В противном случае вы попадете в ад со всеми различными вариантами кодирования для тега img ... – arkascha

ответ

1

Попробуйте как этот

$pattern = '/<img.+src=(.)(.*)\1[^>]*>/iU'; 
$callback_fn = 'process'; 
$string = 'this is dummy string <img src="imageone.jpg" alt="" /> this is another sentesnces <img src="imagetwo.jpg" /> this is third one'; 
$content = preg_replace_callback($pattern, $callback_fn, $string); 
function process($matches) 
{ 
    return "&nbsp;&nbsp;<a href='http://mywebsite.com/".$matches[2]."'> <font color ='black' >View Image</font>&nbsp;&nbsp;</a>"; 
} 
echo $content; 

Также вместо <font> тега, используйте <span> потому <font> осуждается.

+0

спасибо, что спасли мою жизнь – CodeManiac

Смежные вопросы