【发布时间】:2012-08-20 09:37:52
【问题描述】:
我正在尝试获取单个 HTML 段落中的 URL,并使用 PHP 的 preg_replace_callback 提取它们。现在,WordPress 这样做:
preg_replace_callback( '|^\s*(https?://[^\s"]+)\s*$|im', 'callback_function', $string );
但这与它自己的行上的 URL 匹配——它周围没有 HTML。我需要做的是匹配这样的 URL:
<p>http://youtube.com/</p>
我不关心段落标记前后的空格,我要做的就是提取该 URL 以用preg_replace_callback 替换更详细的信息。
有什么帮助吗?
更新: 好的,我有一个帖子的文字,里面有很多这样的段落:
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis et nunc vel felis vulputate tincidunt. In dapibus tempus sollicitudin. Nullam quis ultricies tortor. Ut malesuada aliquet enim. Aliquam et lobortis urna. Sed commodo malesuada malesuada. Donec cursus nisi nec mauris venenatis pharetra. Curabitur ut leo purus.</p>
<p>http://youtube.com/</p>
<p>Etiam non odio tellus, vel imperdiet nunc. Praesent rutrum sagittis purus, quis pretium eros varius ut. http://google.com/ Ut id orci eu lacus aliquam luctus. Sed dolor quam, suscipit eu dapibus feugiat, lacinia vitae augue.</p>
从该文本中,我只想提取段落中的http://youtube.com/。我看到另一段中有一个 Google.com 链接,但我不希望这样。我想要的只是他们自己段落中的链接(或链接)。它会作为参数传递给我的回调“http://youtube.com/”。
【问题讨论】:
-
肖恩,您能否发布一些需要考虑的边缘情况的示例简介?我想你发布的那个很简单。
-
同意。请发布示例。您想提取带有或不带有周围标签的 URL 吗?我问是因为您的示例 确实 与发布的段落中的 URL 完全匹配。示例将有助于准确说明您要描述的内容。
-
刚刚发布了我需要匹配的更新!
-
哦,我猜我误会了 - 没有意识到你只需要
,以为你需要所有标签 :)
标签: php regex preg-replace-callback