【发布时间】:2012-12-23 21:33:54
【问题描述】:
假设我有一个文本,
$text = '@stackguy @flowguy I need to learn more advanced php #ilovephp';
我想分别用这两个锚标签替换@stackguy 和@flowguy。这也适用于文本字符串中任意数量的@。
<a href="url/stackguy">@stackguy</a>
<a href="url/flowguy">@flowguy</a>
我也想用
替换#ilovephp<a href="search/ilovephp">#ilovephp</a>
它也应该适用于多个#。我猜会是这样的
preg_replace_callback('regex',
create_function('$matches', '
switch ($matches[1]) {
case "@":
return "<a href=url.$matches[2]'/'>" . $matches[2] . "</a>";
case "#":
return "<a>" . $matches[2] . "</a>";
}
'), $var);
正则表达式会是什么样子? 我的函数是要匹配所有需要的还是我需要添加一个 foreach 循环? 谢谢。
【问题讨论】:
-
Sooo...有什么问题?
-
你为什么“猜测它会是这样的”?尝试一下,然后如果它不起作用,那么我们有一些事情要做。您已经接近实际编写一些代码并进行尝试了。
-
func(正则表达式)最重要的部分是我不知道的。
标签: php regex preg-replace preg-replace-callback