使用Regex指定iframe链接

时间:2011-11-13 10:24:59

标签: php regex web-applications

问题:

我需要确认iframe有一种类型的链接,格式如下:

http://www.example.com/embed/*****11 CHARACTERS MAX.****?rel=0

Starts with: http://www.example.com/embed/
Ends with: ?rel=0
11 CHARACTERS MAX. means in this spot, there can any 11 characters. Don't go beyond 11.

注意:确保每个帖子中都没有指定的标签。这取决于用户如何使用编辑器。

我正在使用PHP


我使用下面这一行来确保除了指定的标签外,所有标签都被排除在外:

$rtxt_offer = preg_replace('#<(?!/?(u|br|iframe)\b)[^>]+>#', '', $rtxt_offer);

2 个答案:

答案 0 :(得分:0)

首先,PHP中有内置函数可以为您删除标记:http://php.net/manual/en/function.strip-tags.php这里不需要使用慢速正则表达式。

您需要解决问题的步骤:

  1. 将此文本解析为DomDocument
  2. 从中获取iframe个节点
  3. 从iframe获取src属性并使用parse_url
  4. 进行解析
  5. 现在,您可以对parse_url
  6. 返回的所有组件执行简单检查

    快乐编码

答案 1 :(得分:0)

您写道,您只想使用正则表达式验证链接值:

$doesMatch = preg_match('~^http://www.example.com/embed/[^?]{0,11}\?rel=0$~', $link);

这特别符合您的要求。

要删除代码,请参阅strip_tags或使用HTML解析器执行此操作,这也可以帮助您更准确地获取链接值。

在类似的问题/答案中,我发布了一些示例代码,如何一起使用strip_tagsSimpleXMLElementExtract all the text and img tags from HTML in PHP