我有一个网页源代码,我想在我的项目中使用。我想在此代码中使用图像链接。所以,我想在PHP中使用正则表达式来实现此链接。
就是这样:
img src =“http://imagelinkhere.com”class =“image”
这样只有一条线。 我的逻辑是在
之间获取字符串=“
和
“class =”image“
字符。
我如何使用REGEX执行此操作?非常感谢你。
答案 0 :(得分:3)
Don't use Regex
for HTML .. try DomDocument
$html = '<html><img src="http://imagelinkhere.com" class="image" /></html>';
$dom = new DOMDocument();
$dom->loadHTML($html);
$img = $dom->getElementsByTagName("img");
foreach ( $img as $v ) {
if ($v->getAttribute("class") == "image")
print($v->getAttribute("src"));
}
输出
http://imagelinkhere.com
答案 1 :(得分:1)
使用
.*="(.*)?" .*
使用preg替换为您提供第一个正则表达式组中的URL(\ 1)。
如此完整,看起来像是
$str='img src="http://imagelinkhere.com" class="image"';
$str=preg_replace('.*="(.*)?" .*','$1',$str);
echo $str;
- &GT;
http://imagelinkhere.com
编辑: 或者只是按照Baba的建议并使用DOM Parser。我会记得,在用它解析html时,正则表达式会给你带来麻烦。
答案 2 :(得分:1)
preg_match("/(http://+.*?")/",$text,$matches);
var_dump($matches);
链接将在$ matches中。
答案 3 :(得分:0)
有几种方法可以这样做:
1.你可以使用 我更喜欢简单HTML的SimpleHTML Dom Parser
2.您也可以使用preg_match
$foo = '<img class="foo bar test" title="test image" src="http://example.com/img/image.jpg" alt="test image" class="image" />';
$array = array();
preg_match( '/src="([^"]*)"/i', $foo, $array ) ;
请参阅此thread
答案 4 :(得分:0)
我能听到蹄子的声音,所以我用DOM解析而不是正则表达式。
$dom = new DOMDocument();
$dom->loadHTMLFile('path/to/your/file.html');
foreach ($dom->getElementsByTagName('img') as $img)
{
if ($img->hasAttribute('class') && $img->getAttribute('class') == 'image')
{
echo $img->getAttribute('src');
}
}
这将仅回显带有class="image"
答案 5 :(得分:-1)
尝试使用preg_match_all,如下所示:
preg_match_all('/img src="([^"]*)"/', $source, $images);
这应该将图像的所有URL放在$images
变量中。正则表达式的作用是在代码中找到所有img src
位并匹配引号之间的位。