所以我在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,如何使正则表达式不起作用; ?
谢谢!
答案 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);