维基百科链接 PHP 中的正则表达式
如何只将 [[words]] 中的单词绘制到数组中?
[[旭川市|旭川]](文化) - [[aiヌ]]文化、[[旭川市旭山动物园|旭山动物园]]など
我尝试了 \[\[.*]]
但它不起作用,也许是因为 .*
仅适用于英文字符串。
How can I draw only the words in [[words]] into array?
[[旭川市|旭川]](文化) - [[アイヌ]]文化、[[旭川市旭山動物園|旭山動物園]]など
I tried \[\[.*]]
but it didn't work, maybe it is because .*
is only for English strings..
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可以先对 Unicode 进行编码:
You can encode the Unicode first:
您需要两边都反斜杠,所有方括号都需要转义。
这在Python中有效,可能需要针对PHP进行修改:
嗯,也许我对必须转义右方括号的看法是错误的,事实证明在Python中没有必要。
You need to backslash both sides, all the square brackets need to be escaped.
This worked in Python, may need modification for PHP:
Hmm, maybe I'm wrong about having to escape the right-square brackets, turned out it wasn't necessary in Python.
一个问题是您使用贪婪通配符:
\[\[.*]]
将从第一个[[
到最后一个]]
,包括任何中间的]]
。大多数正则表达式引擎现在还包含一个非贪婪通配符,通常是
*?
,因此\[\[.*?]]
只会匹配一个wiki链接一次。One problem is that you're using the greedy wildcard:
\[\[.*]]
will match from the first[[
to the last]]
, including any intervening]]
.Most regex engines now also include a nongreedy wildcard, typically
*?
so\[\[.*?]]
would just match one wikilink at a time.