2012-05-26 1 views
0

Я хотел бы создать функцию, которая отображает только ссылки на изображение из строки.Функция для echo только значение src attributum изображения из строки

Мой код не работает, но я не знаю почему.

function csak_a_kepek($bejovo_szoveg){ 
    $re = '/(?<=src=")(?:.*?)(?=")/ui'; 
    $eredmeny = preg_match('/(<img[^>]+>)/i', $bejovo_szoveg, $matches); 
    for($i=0;$i<count($matches);$i++){ 
     $nMatches = preg_match($re, $matches[$i], $aMatches); 
    } 
    for($i=0;$i<count($aMatches);$i++){ 
     $return .= $aMatches[$i].'/;/'; 
    } 
    return $return; 
} 

///является разделителем, чтобы было легче взорвать его.

Можете ли вы мне помочь, пожалуйста, где я должен изменить его, чтобы он работал?

Рабочий код: (спасибо за redskins80)

include('simplehtmldom/simple_html_dom.php'); 
function only_pictures($string){ 
    $html = str_get_html($string); 
    foreach($html->find('img') as $element) { 
     $return .= $element->src . '<br />'; 
    } 
    return $return; 
} 
+0

Уж, люди будут когда-либо использовать английский в своем коде, даже если это не их родной язык? И есть ли какая-то причина, по которой вы a) не используете парсер DOM вместо регулярных выражений и b) ** возвращаете строку, которую нужно разделить позже, а не массив **? – ThiefMaster

+2

use simple_html_dom для анализа всех html. Анализ HTML с использованием регулярных выражений не рекомендуется. С DOM вы можете легко очистить теги, а также указать, какую часть тегов вы хотите! – arijeet

+0

ваше решение simple_html_dom выглядит хорошо, я готов сделать его работоспособным для меня: D Подождите 5 минут :) – mark0ba

ответ

0

Ваши модели, кажется неправильным. Попробуйте следующее:

$html = '<img class="" src="http://www.google.com" />'; 
$pattern = '/<img([^>]*)>/i'; 
preg_match($pattern, $html, $m); 

if(!empty($m)) { 
    $max = count($m); 
    for($i=1; $i<$max; $i++) { 
     $pattern = '/src="([^"]*)"/i'; 
     preg_match($pattern, $m[$i], $m2); 
     echo $m2[1]."\n"; 
    } 
}