Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.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正则表达式来获取特定span元素的内容_Php_Regex - Fatal编程技术网

PHP正则表达式来获取特定span元素的内容

PHP正则表达式来获取特定span元素的内容,php,regex,Php,Regex,我需要一些帮助。。。说到正则表达式,我有点(阅读总量)n00b,需要一些帮助来编写正则表达式,以便从PHP中找到特定HTML标记中包含的特定文本 源字符串如下所示: <span lang="en">English Content</span><span lang="fr">French content</span> ... etc ... 英语内容法语内容。。。等 我只想提取特定语言的元素文本 有人能帮忙吗?有很多用于PHP的HTML解析器。我

我需要一些帮助。。。说到正则表达式,我有点(阅读总量)n00b,需要一些帮助来编写正则表达式,以便从PHP中找到特定HTML标记中包含的特定文本

源字符串如下所示:

<span lang="en">English Content</span><span lang="fr">French content</span> ... etc ...
英语内容法语内容。。。等
我只想提取特定语言的元素文本


有人能帮忙吗?

有很多用于PHP的HTML解析器。我建议您查看其中一个(例如:)


用正则表达式读取HTML比你想象的要容易得多,也比你希望避免的要难得多(特别是当你不完全了解正则表达式,并且你的输入不能保证是100%干净的HTML时)。

有很多HTML解析器可用于PHP。我建议您查看其中一个(例如:)

用正则表达式读取HTML比你想象的要容易得多,也比你希望避免的要难得多(特别是当你不完全了解正则表达式,并且你的输入不能保证是100%干净的HTML时)。

(糟糕,不起作用)示例说明了为什么不应该使用正则表达式解析HTML

/<span lang="en">(.*)<\/span>/
/(*)/
将输出:

English Content</span><span lang="fr">French content
英语内容法语内容
更多内容请阅读:

(坏的,不工作)示例,说明了为什么不应该使用正则表达式解析html

/<span lang="en">(.*)<\/span>/
/(*)/
将输出:

English Content</span><span lang="fr">French content
英语内容法语内容
更多内容请阅读:


有一个非常棒的类,可以让您在HTML页面上执行类似SQL的查询。也许值得一看:

我已经用过很多次了,我喜欢它


希望这会有所帮助……

有一个非常棒的类,它可以让您在HTML页面上执行类似SQL的查询。也许值得一看:

我已经用过很多次了,我喜欢它


希望这能有所帮助……

不。这就是我所说的“打中你自己的脚”的意思。我同意使用正则表达式解析html不是你想做的事情,但我试图回答这个问题。对不起,这至少在两个方面是错误的(如果你不能找出哪两个,这就是你应该使用解析器的一个很好的理由)@cletus:lol:-)@Karsten:如果你想找出错误1,只需在给定的示例中运行你的正则表达式。谢谢你的想法,Karsten。我稍微修改了一下,它对我很有效:(.*)不。这就是我所说的“打中你自己的脚”的意思。我同意使用正则表达式解析html不是你想做的事情,但我试图回答这个问题。对不起,但这至少在两个方面是错误的(如果你不能找出哪两个,这就是为什么你应该使用解析器的一个很好的理由)。@cletus:lol:-)@Karsten:如果你想找出错误1,只需针对给定的示例运行你的正则表达式。谢谢你的主意,Karsten。我稍微修改了一下,它对我有用:(*)谢谢你的想法,你可能是对的。我认为一个简单的正则表达式将是实现这一点的最快和最简单的方法,因为我不是在解析整个HTML文档,只是解析一个看起来总是像示例一样的小字符串。然后,您可能还是最好通过两次调用strps()来获取所需子字符串的索引;PHP5.x包含SimpleXML DOM解析器,这使得做这类事情变得简单明了。您可以轻松地使用XPath查询遍历DOM并选择所需的部分。它是否也处理(可能格式错误的)HTML?感谢您的想法,您可能是对的。我认为一个简单的正则表达式将是实现这一点的最快和最简单的方法,因为我不是在解析整个HTML文档,只是解析一个看起来总是像示例一样的小字符串。然后,您可能还是最好通过两次调用strps()来获取所需子字符串的索引;PHP5.x包含SimpleXML DOM解析器,这使得做这类事情变得简单明了。您可以轻松地使用XPath查询遍历DOM并选择所需的部分。它是否也处理(可能格式错误的)HTML?