我有以下代码:
<center><img src="http://trustedyouautocorrect.com/wp-content/uploads/2012/02/ixxx66134057.jpg" alt="daniel7531sarah" /></center><input id="gwProxy" type="hidden" />
<!--Session data--><input id="jsProxy" onclick="if(typeof(jsCall)=='function'){jsCall();}else{setTimeout('jsCall()',500);}" type="hidden" />
<div id="refHTML"></div>
我需要制作将从image-src获取链接的脚本。我该怎么做?我希望你帮助我。谢谢。
答案 0 :(得分:0)
我假设使用Javascript。最简单的方法是在img上放置一个id属性,然后就可以轻松地提取src了。
<script type="text/javascript">
function getSRC()
{
var imgID = document.getElementById("imgID");
alert( imgID.getAttribute('src') );
}
</script>
<img id="imgID" src="someIMG.png" /><br />
<a href="#" onclick="getSRC()">get</a>
答案 1 :(得分:0)
使用正则表达式提取img src ...
<?php
$str = '<center><img src="http://trustedyouautocorrect.com/wp-content/uploads/2012/02/ixxx66134057.jpg" alt="daniel7531sarah" /></center><input id="gwProxy" type="hidden" />
<!--Session data--><input id="jsProxy" onclick="if(typeof(jsCall)==\'function\'){jsCall();}else{setTimeout(\'jsCall()\',500);}" type="hidden" />
<div id="refHTML"></div>';
// regex to match all src attributes of image tags
preg_match_all("/<img[^>]+src=(['\"])(.+?)\\1/",$str,$matches);
// $matches{
// [0] -> the whole matched string
// [1] -> the quotation char (could be ' or ") captured so it can be used
// to match the closing quote (of the same type)
// [2] -> the src attr value
// }
// loop through each src attr value we captured
foreach($matches[2] as $m){
echo "This is what you are after ~~> " . $m;
}
?>
正则表达式意味着......
<img
后跟>
([^>]+
)后跟src=
后跟'
或"
已被捕获以供日后使用和转发((['\"])
).+?
)\\1
)然而,这是解决问题的一种不好的方法,并且存在一些问题。我的正则表达式不捕获未引用的src属性。可能还有一些不寻常的情况,它与误报相匹配,或与真实网址不匹配。
正则表达式虽然在很多情况下都很棒,但作为配套模式的瑞士军刀,却是一个糟糕的解析器。当您需要解析HTML时,您应该使用适当的方法。
更好(更容易出错,更快,更容易理解和维护)的方式......
<?php
$str = '<center><img src="http://trustedyouautocorrect.com/wp-content/uploads/2012/02/ixxx66134057.jpg" alt="daniel7531sarah" /></center><input id="gwProxy" type="hidden" />
<!--Session data--><input id="jsProxy" onclick="if(typeof(jsCall)==\'function\'){jsCall();}else{setTimeout(\'jsCall()\',500);}" type="hidden" />
<div id="refHTML"></div>';
$DOM = new DOMDocument;
$DOM->loadHTML($str);
//get img tags
$items = $DOM->getElementsByTagName('img');
//loop through found image tags
for ($i = 0; $i < $items->length; $i++){
$node = $items->item($i);
if ($node->hasAttributes()){
// attach all attributes of tag to array
foreach ($node->attributes as $attr){
$array[$attr->nodeName] = $attr->nodeValue;
}
}
// print out just the src attribute
echo "This is what you want ~~> " . $array['src'];
}
?>