我试图在 HTML 文本块中提取图像的第一个 src 属性,如下所示:
Lorem ipsum <img src="http://example.com/img.jpg" />consequat.
创建正则表达式来匹配 src 属性没有问题,但是我该如何return第一个匹配的 src 属性,而不是替换 it?
从PHP手册来看,似乎预过滤器() http://php.net/manual/en/function.preg-filter.php可以解决这个问题,但我不能依赖最终用户拥有高于 5.3 的 PHP 版本。
所有其他 PHP 正则表达式函数似乎都是 preg_match()(返回布尔值)或 preg_replace(用某些内容替换匹配项)的变体。有没有一个简单的方法returnPHP 中的正则表达式匹配?
您可以使用第三个参数preg_match http://php.net/preg_match了解匹配的内容(它是一个数组,通过引用传递):
int preg_match ( string $pattern ,
string $subject [, array &$matches [,
int $flags [, int $offset ]]] )
如果提供了匹配项,那么它是
充满了搜索结果。$matches[0]
将包含以下文本
匹配完整的图案,$matches[1]
将有匹配的文本
第一个捕获的括号
子模式等。
例如,对于这部分代码:
$str = 'Lorem ipsum dolor sit amet, adipisicing <img src="http://example.com/img.jpg" />consequat.';
$matches = array();
if (preg_match('#<img src="(.*?)" />#', $str, $matches)) {
var_dump($matches);
}
你会得到这样的输出:
array
0 => string '<img src="http://example.com/img.jpg" />' (length=37)
1 => string 'http://example.com/img.jpg' (length=23)
(请注意,我的正则表达式过于简单——并且当涉及到从某些 HTML 字符串中提取数据时,正则表达式通常不是“正确的工具”...)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)