两个标签之间的PHP Regex

时间:2014-03-15 01:11:42

标签: php regex

我在正则表达式上非常可怕并且已经尝试了解它的所有参数但是永远无法正确使用,我的代码在这里它只是不起作用......任何人都可以发现我的错误吗?

此外,如果您想查看页面源,只需取消注释echo($ out);并且您可以查看标签之间的链接。非常感谢你们!

<?php

$i = 0;
$delimiter = '#';
$startTag = '<img height=".*" src="';
$endTag = '" width=".*">';
$out = file_get_contents("https://www.google.com/search?q=images&safe=off&source=lnms&tbm=isch&sa=X&ei=-6MjU6z_BMTerAHRvoCYDg&ved=0CAcQ_AUoAQ&biw=1366&bih=664");
$regex = $delimiter . preg_quote($startTag, $delimiter) 
                    . '(.*?)' 
                    . preg_quote($endTag, $delimiter) 
                    . $delimiter 
                    . 's';
$AllImages = preg_match_all($regex,$out,$image);
foreach($AllImages as $Link) {
echo($Link[$i] . "\n");
$i++;
}
//echo($out); to get the tag <img height=".*" src="     and    " width=".*">

1 个答案:

答案 0 :(得分:0)

由于您需要无上下文语法才能解析所有HTML。

但是说你要解析一些东西,并且里面没有内部标签,你可以使用以下方法解析内容:

<a([^>]*)>([^<]*)</a>

其中第一个组将解析a标记的参数,第二个组将解析两个标记之间的内容。

如果您正在寻找标签的参数(例如图像的href),您可以使用:

<img[^>]* src="([^"]*)"[^>]*>

第一组将与src字段匹配。

相关问题