伙计们,这可能会相当简单,但是如何在一堆文本中使用此事件的正则表达式找到所有匹配项。
[[data in here]]
EG:
Blah blah blah [[find]] and maybe [[this]]
所以我能够找到事件,然后将它们替换为URL。
这有意义吗?
我尝试使用
preg_match_all("/[[([^<]*)]]/", $data, $matches, PREG_OFFSET_CAPTURE);
但是返回错误。有任何想法吗? :)
答案 0 :(得分:5)
试试这个:
preg_match_all("/\[\[(.+?)\]\]/", $data, $matches, PREG_OFFSET_CAPTURE);
答案 1 :(得分:0)
也许......
"/\[.*\]/"
?只是一个疯狂的猜测。
我认为你的基本问题是你需要逃避'[]'括号,因为它们是特殊的字符。
答案 2 :(得分:0)
你需要转义'['和']'字符 - 它们是正则表达式中的特殊字符。你最好用preg_replace_callback()
function makeURL($matches) {
$url = $matches[1];
return "<a href=\"http://$url\">$url</a>";
}
$data = 'My website is [[www.example.com]].';
echo preg_replace_callback('/\[\[(.*?)\]\]/', 'makeURL', $data);
// output: My website is <a href="http://www.example.com">www.example.com</a>
您可以调整makeURL()
功能,以便随意重写网址。
答案 3 :(得分:0)
[
和]
在正则表达式语法中有意义。要匹配它们,您需要使用\
字符“转义”它们。所以你的正则表达式是:
"/\[\[(.+?)\]\]/"
[
和]
字符的使用以及如何转义它们是非常基本的正则表达式知识。不要太粗鲁,但我建议花一点时间学习正则表达式,然后再为生产代码编写代码。