how to return a regex match in php, instead of replacing(如何在php中返回正则表达式匹配,而不是替换)
本文介绍了如何在php中返回正则表达式匹配,而不是替换的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我尝试提取挡路HTML文本中图像的第一个src属性,如下所示:
Lorem ipsum <img src="aHR0cDovL2V4YW1wbGUuY29tL2ltZy5qcGc=" />consequat.
创建正则表达式以匹配src属性没有问题,但是如何返回第一个匹配的src属性,而不是替换?
翻阅PHP手册,preg_filter()似乎可以做到这一点,但我不能指望最终用户使用PHP>5.3。
所有其他PHP regex函数似乎都是preg_Match()的变体,返回布尔值,或preg_place,用某种东西替换匹配。是否有直接的方法在PHP中返回正则表达式匹配?
推荐答案
可以使用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="aHR0cDovL2V4YW1wbGUuY29tL2ltZy5qcGc=" />consequat.';
$matches = array();
if (preg_match('#<img src="KC4qPyk=" />#', $str, $matches)) {
var_dump($matches);
}
您将获得以下输出:
array
0 => string '<img src="aHR0cDovL2V4YW1wbGUuY29tL2ltZy5qcGc=" />' (length=37)
1 => string 'http://example.com/img.jpg' (length=23)
(请注意,我的正则表达式过于简单--当涉及到从某些HTML字符串中提取数据时,正则表达式通常不是"合适的工具".)
这篇关于如何在php中返回正则表达式匹配,而不是替换的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:如何在php中返回正则表达式匹配,而不是替换


猜你喜欢
- 如何使用 Google API 在团队云端硬盘中创建文件夹? 2022-01-01
- 覆盖 Magento 社区模块控制器的问题 2022-01-01
- openssl_digest vs hash vs hash_hmac?盐与盐的区别HMAC? 2022-01-01
- Oracle 即时客户端 DYLD_LIBRARY_PATH 错误 2022-01-01
- 使用 GD 和 libjpeg 支持编译 PHP 2022-01-01
- 如何在 Symfony2 中正确使用 webSockets 2021-01-01
- Laravel 5:Model.php 中的 MassAssignmentException 2021-01-01
- PHP foreach() 与数组中的数组? 2022-01-01
- 如何从数据库中获取数据以在 laravel 中查看页面? 2022-01-01
- PHP - if 语句中的倒序 2021-01-01