Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用preg_match在字符串中查找img标记_Php_Regex - Fatal编程技术网

Php 使用preg_match在字符串中查找img标记

Php 使用preg_match在字符串中查找img标记,php,regex,Php,Regex,如何使用PHP在字符串中找到HTML标记 这是我的数据库中的一条记录: $str = "This is me <img src='images/mardagz.png' width='200' /> :) when i was 4th year highschool hahah so funny..."; $str=“这就是我:)我高中四年级的时候,哈哈,真有趣……”; 我正在尝试获取 但是,这段代码总是给我一个错误:注意:第19行mardagz.blog\post.php中未

如何使用PHP在字符串中找到HTML标记

这是我的数据库中的一条记录:

$str = "This is me <img src='images/mardagz.png' width='200' /> :) when i was 4th year highschool hahah so funny...";
$str=“这就是我:)我高中四年级的时候,哈哈,真有趣……”;
我正在尝试获取

但是,这段代码总是给我一个错误:
注意:第19行mardagz.blog\post.php中未定义的偏移量:1


我该怎么办?

$matches[1]
保存与搜索模式中的第一组匹配的文本,但您的模式没有任何组。组是用括号定义的

或者将您的整个模式按如下方式分组:

$gimg = preg_match('/<img[^>]+\>/i', $str , $matches) ? $matches[1]: '<img src="http://facebook.com/username/profile.png" width="200" />
preg_match('/(]+>)/i',$str,$matches)

或者只需使用
$matches[0]
获得匹配的整个文本。

您可以使用regex获得img标记,但如果我是您,我不会使用regex

我认为更好的办法是使用如下HTML解析器:


或者您可以使用PHP的DOM库:

在询问之前使用搜索函数的可能重复项。不要问重复的问题。@Gordon:别紧张。真正的问题不是“如何解析HTML”,而是“我的代码片段中的错误在哪里”。特别是,这不是您所指问题的重复。@FerdinandBeyer fix my code问题在StackOverflow上同样不受欢迎,因为这是另一个询问如何从html获取内容的问题。副本显示了如何获取元素和属性。类似的有上百种。如果上面的一个对你来说不够好,就选一个。当懒惰的运营商拒绝在询问之前进行研究或坚持重用现有解决方案时,我们绝对没有理由给他们一个答案来奖励他们。作为一个15k+的用户,你应该支持社区和closevote,而不是在这个问题上谴责我。@Gordon:我觉得你指责我在这里“谴责”是相当冒犯的。虽然我同意用户在提问之前应该先搜索,而且有很多类似的问题,但我认为向新手指出明显的错误并没有坏处。我们都是新手,正如常见问题所述,我们都是来一起学习的。
preg_match('/(<img[^>]+>)/i', $str, $matches)