2

我正在寻找验证提交的帖子的解决方案。我想检查是否有人提交(在帖子中):

  • 用于嵌入 YouTube 或 Vimeo 视频的 iframe,替换 iframe 中使用的正确宽度
  • URL,替换为 HTML 可点击链接
  • 图像 URL,用 HTML 替换它

我能够为这些要求中的每一个找到正确的正则表达式,但是使用 3 个单独的 preg_replace 函数会导致干扰。例如,检测一个 URL 也会检测到 Iframe 内的 URL。

我已经在 Stackoverflow 和互联网的其他地方搜索了一个解决方案。但我不是专家,所以也许有人可以帮助我或指导我到正确的教程/网站/操作方法...

4

2 回答 2

1

您可以简单地传递 URL 模式数组,preg_replace()如下所示:

$pattern_array = array(
    '/somepattern/',
    '/someotherpattern/',
    '/yetanotherpattern/',
)
$replacement_array = array(
    'somereplacement',
    'someotherreplacement',
    'yetanotherreplacement'
}

$result = preg_replace($pattern_array, $replacement_array, $subject_string);
于 2012-12-24T18:40:25.857 回答
1

您可以做的是首先将 iframe 与 preg_match 匹配,然后用占位符替换它们。

然后你可以替换 urls/images。然后,将 iframe 占位符替换为您之前匹配的 iframe。

您可以使用 preg_replace_callback 生成唯一的顺序占位符,这样您就可以运行一些代码来为每个替换增加一个 $placeholder_id。

这是一种通用策略,通常可以大大简化复杂的解析。

于 2012-12-24T18:45:06.293 回答