【发布时间】:2015-01-08 12:47:07
【问题描述】:
我在使用 REGEX (PHP) 匹配字符串时遇到了一些问题。
我们有这个代码:
<p style="text-align: center; ">
<iframe height="360" src="http://example.com/videoembed/9338/" frameborder="0" width="640"></iframe></p>
我们有这个正则表达式:
/<p.*>.*<iframe.*><\/iframe><\/p>/is
但是,这也匹配字符串上的所有段落标记 - 不仅仅是包含 IFRAME 标记的那些。怎么才能只匹配包含IFRAME的P标签呢?
我们还想使用相同的 REGEX 匹配此代码:
<p style="text-align: center;"><iframe allowfullscreen="" frameborder="0" height="360" src="http://example.com/videoembed/9718/" width="640"></iframe></p>
请注意,没有换行符和更少的空格(在 P 标记中)。
我们怎样才能做到这一点?我对 REGEX 有点陌生。
提前感谢您的帮助。
【问题讨论】:
-
您绝对应该不在此任务中使用正则表达式,而应使用 XML 解析器,例如 XML Parser 或 SimpleXML,或 HTML 解析器,例如 @ 987654323@.
-
这可能无法回答您的问题,但可以解决您停止使用正则表达式解析 (x)html 的问题。您可能想看看这个:php.net/manual/de/book.simplexml.php 和 stackoverflow.com/questions/1732348/…
-
进一步鼓励使用 HTML 解析器而不是正则表达式:htmlparsing.com
-
感谢您提供您的 cmets。我肯定会研究 PHP 中的 HTML 解析而不是正则表达式。