我必须做在PHP的preg_replace如下:PHP的preg_replace
[some text][id]
应<a href='id'>some_text</a>
其中id
是一个整数
尝试下面的代替,可惜没有按预期工作:
preg_replace("/\[[^)]\]\[[0-9]+\]/","<a href='$2'>$1</a>",$string);
此外,还可以考虑使用带额外支架的示例[some text]][id]
,其中应使用最后一个支架。
任何想法?
我必须做在PHP的preg_replace如下:PHP的preg_replace
[some text][id]
应<a href='id'>some_text</a>
其中id
是一个整数
尝试下面的代替,可惜没有按预期工作:
preg_replace("/\[[^)]\]\[[0-9]+\]/","<a href='$2'>$1</a>",$string);
此外,还可以考虑使用带额外支架的示例[some text]][id]
,其中应使用最后一个支架。
任何想法?
这里有一个解决方案:
$string = '[some text][117]';
$s = preg_replace("/\[([^\]]+)\]\[([0-9]+)\]/","<a href='$2'>$1</a>",$string);
var_dump($s);
首先 - 使用$1
(或$2
),你需要捕获括号()
模式。
第二个错误 - 您正在尝试查找^)
,但您的文本中没有)
。所以我把)
换成]
。
更新一个额外]
:
$s = preg_replace("/\[([^\]]+)(\]?)\]\[([0-9]+)\]/","<a href='$3'>$1$2</a>",$string);
不知道你需要这方面做的成立]
,所以我把它添加到链接文本。
在很多]]]
的情况下,你可以使用:
$s = preg_replace("/\[([^\]]+)(\]*)\]\[([0-9]+)\]/","<a href='$3'>$1$2</a>",$string);
是的,我看到了我的错误。谢谢! –
更新非常好!谢谢! –
当我添加'htmlspecialchars($ string)'作为第三个参数时,它为什么不起作用?对于其他'preg_replace'函数它的工作。 –
对不起,已编辑。但是,函数的第一部分和第二部分不起作用 –
您需要捕获要替换的内容才能在占位符中获取值。 – fpietka
如果您知道解决方案,请将它添加到'Answer'中? –