正则表达式前面没有href ="

时间:2017-07-06 18:55:03

标签: php regex wordpress youtube embed

所以我在WordPress环境中的youtube链接中添加了[embed] [/ embed],因为如果你在后端使用不同的字段输入内容而不是normale内容编辑器,它就不会自动执行此操作(即使你apply_filter the_content)。

所以,我发现这个正则表达式适用于我的应用程序:

$firstalinea = preg_replace('/\s*[a-zA-Z\/\/:\.]*youtu(be.com\/watch\?v=|.be\/)([a-zA-Z0-9\-_]+)([a-zA-Z0-9\/\*\-\_\?\&\;\%\=\.]*)/i', '[embed]https://www.youtube.com/watch?v=$2[/embed]', $firstalinea);

除了一件事。如果有人放置了一个YouTube视频的链接,而不是想要嵌入它,它也会替换,然后该链接不再有效。

<a href="https://youtu.be/xxxxxx">Link</a>

那么,如果前面加上href =&#34,如何使正则表达式不起作用; ?

谢谢!

1 个答案:

答案 0 :(得分:1)

解决了它:

$re = '/(?<!href=\")(http:\/\/|https:\/\/)(?:www\.)?youtu(be.com\/watch\?v=|.be\/)([a-zA-Z0-9\-_]+)([a-zA-Z0-9\/\*\-\_\?\&\;\%\=\.]*)/i';
$firstalinea = preg_replace($re, '[embed]https://www.youtube.com/watch?v=$3[/embed]', $firstalinea);