PHP使用Regex查找子串字符串

时间:2012-12-13 09:09:33

标签: php regex string parsing

我有一个网页源代码,我想在我的项目中使用。我想在此代码中使用图像链接。所以,我想在PHP中使用正则表达式来实现此链接。

就是这样:

  

img src =“http://imagelinkhere.com”class =“image”

这样只有一条线。 我的逻辑是在

之间获取字符串
  

=“

  

“class =”image“

字符。

我如何使用REGEX执行此操作?非常感谢你。

6 个答案:

答案 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"

的img标记的src属性

答案 5 :(得分:-1)

尝试使用preg_match_all,如下所示:

preg_match_all('/img src="([^"]*)"/', $source, $images);

这应该将图像的所有URL放在$images变量中。正则表达式的作用是在代码中找到所有img src位并匹配引号之间的位。