PHP正则表达式:将字符串转换为锚点

时间:2013-10-02 16:34:33

标签: php regex

我的字符串看起来像这个例子:

$str = "Sally sells [[seashells]] by the [[seashore]]."

我需要将上述字符串转换为:

Sally sells <a href='?action=definition&word=seashells'>seashells</a> by the <a href='?action=definition&word=seashore'>seashore</a>.

请注意方括号之间的单词如何在锚标记中使用。

任何人都可以指导我解决这个问题吗?

1 个答案:

答案 0 :(得分:3)

尝试以下方法:

$pattern = "/\[\[([\w-]+)\]\]/";
$replace = "<a href='?action=definition&word=$1'>$1</a>";
$msg = preg_replace($pattern, $replace, $msg);

See it in action here.

请注意,在括号[\w-]+中搜索的令牌只会匹配字母A-Z(不区分大小写),数字0-9,连字符-和下划线_。允许太多其他类型的字符可能意味着必须在匹配上使用urlencode作为额外步骤。