如果我有一个字符串
<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”。
有点混乱。
更新的问题:实际问题
假设我在HTML
的帮助下通过PHP
从网址获得cURL()
。
如何检索所有图像名称并存储在文件夹中。
答案 0 :(得分:6)
你可以使用这样的东西来获取图像的来源:
<?php
$doc = new DOMDocument();
$doc->loadHTML(htmlstring);
$imageTags = $doc->getElementsByTagName('img');
foreach($imageTags as $tag) {
echo $tag->getAttribute('src');
}
?>
答案 1 :(得分:1)
您应该使用preg_match_all来执行此类任务。未经测试:
preg_match_all('/image\/(.*)\.png/iU', $str, $matches);
var_dump($matches);
$matches
现在应包含www,ttt,rrr。
答案 2 :(得分: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
)
)
答案 3 :(得分: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);
}
?>