0

文字列から画像リンクのみをエコーする関数を作成したいと思います。

私のコードは失敗しますが、理由がわかりません。

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;
}
4

1 に答える 1

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";
    }
}
于 2012-05-26T18:03:23.423 に答える