2

文字列がある場合

<div> balah balah <img src='image/www.png' /> balah balah</div>
<div> balah balah <img src='image/ttt.png' /> balah balah</div>
<div> balah balah <img src='image/rrr.png' /> balah balah</div>

どうすればsrcにある画像名を見つけることができますか. 私はこのコードを使用します

 $pos = strpos($srt,".png");

.pngの位置を見つけるために、位置を取得しました。

最初の「.png」を見つけましたが、「.png」から「/」に戻る方法は見つかりませんでした。

「/」と「。」の間の名前を見つけるにはどうすればよいですか これは「www」です。

少し混乱。

更新された質問: 実際の問題

の助けを借りてHTMLURL から取得したとします。PHPcURL()

すべての画像名を取得してフォルダーに保存するにはどうすればよいですか。

4

4 に答える 4

6

次のようなものを使用して、画像のソースを取得できます。

<?php
    $doc = new DOMDocument();
    $doc->loadHTML(htmlstring);
    $imageTags = $doc->getElementsByTagName('img');

    foreach($imageTags as $tag) {
        echo $tag->getAttribute('src');
    }
?>
于 2013-02-21T18:22:52.337 に答える
1

このようなタスクにはpreg_match_allを使用する必要があります。未検証:

preg_match_all('/image\/(.*)\.png/iU', $str, $matches);

var_dump($matches);

$matcheswww、ttt、rrr が含まれているはずです。

于 2013-02-21T18:24:53.847 に答える
1
$text = "
<div> balah balah <img src='image/www.png' /> balah balah</div>
<div> balah balah <img src='image/ttt.png' /> balah balah</div>
<div> balah balah <img src='image/rrr.png' /> balah balah</div>
";
preg_match_all("/src='image\/([^.]+)/i", $text, $out);
/*
echo $out[1][0]; //www
echo $out[1][1]; //ttt
echo $out[1][2]; //rrr
*/
print_r($out);

OUTPUT
Array
(
    [0] => Array
        (
            [0] => src='image/www
            [1] => src='image/ttt
            [2] => src='image/rrr
        )

    [1] => Array
        (
            [0] => www
            [1] => ttt
            [2] => rrr
        )

)
于 2013-02-21T18:26:31.460 に答える
0

皆様のご協力で原稿を書きました。これが私の問題と同じように多くの解決策を求める人に役立つことを願っています.

  <?php
        $url='http://php.net/'; 
        $returned_content = get_url_contents($url); 

        /* gets the data from a URL */

        function get_url_contents($url){
                $crl = curl_init();
                $timeout = 5;
                curl_setopt ($crl, CURLOPT_URL,$url);
                curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
                curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout);
                $ret = curl_exec($crl);
                curl_close($crl);
                return $ret;
        }

        $doc = new DOMDocument();
        $doc->loadHTML($returned_content);
        $imageTags = $doc->getElementsByTagName('img');
        $img1 = array();
        foreach($imageTags as $tag) {
            $img1[] = $tag->getAttribute('src');

        }

        foreach($img1 as $i){
            save_image($i);
            if(getimagesize(basename($i))){
                echo '<h3 style="color: green;">Image ' . basename($i) . ' Downloaded OK</h3>';
            }else{
                echo '<h3 style="color: red;">Image ' . basename($i) . ' Download Failed</h3>';
            }
        }

        //Alternative Image Saving Using cURL seeing as allow_url_fopen is disabled - bummer
        function save_image($img1,$fullpath='http://example.com/'){
            if($fullpath=='http://example.com/'){
                $fullpath = basename($img1);
            }
            $ch = curl_init ($img1);
            curl_setopt($ch, CURLOPT_HEADER, 0);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
            $rawdata=curl_exec($ch);
            curl_close ($ch);
            if(file_exists($fullpath)){
                unlink($fullpath);
            }
            $fp = fopen($fullpath,'x');
            fwrite($fp, $rawdata);
            fclose($fp);
        }
    ?>
于 2013-02-23T08:39:05.063 に答える