我不太清楚它们被称为什么,但括号中的变量看起来很合法。无论如何,我已经设置了一个自定义(或不太自定义)标记,以便将链接保存到我的数据库中,以便更容易提取,它看起来像这样:
假设我们有以下自定义URL标记:
[url]http://www.url.com[TextToDisplay]
。现在我正在尝试创建一个类似Facebook的算法,它会自动检测YouTube视频并嵌入它们,而不是显示链接,但我遇到了这个奇怪的问题。假设我们有以下自定义URL标记:
[url]http://www.youtube.com/watch?v=WEGbZeaMvtg&list=RDproO6qMsR0Y[www.youtube.com]
然后我使用了这个 preg_replace
.preg_replace('/\[url\].*?youtube\.com.*?(v=(.*?)&?)?.*?\[.*?\]/i','[yt]$1[/yt]',$s);
结果如下
[yt][/yt]
本应该是
[yt]WEGbZeaMvtg[/yt]
我还试过$2
和$0
,其中$0
是整个字符串,而$2
和$1
一样为空。我的问题是为什么这些“正则表达式变量”为空?
沙盒:http://sandbox.onlinephpfunctions.com/code/e408254542d0bbea2f5635ba2d3c8d3a23f844eb
(v=(.*?)&?)?
中删除问号并从$2
获取值,则你的原始代码可以正常工作。 - OGHaza