1

抱歉,如果这个问题与另一个问题重复,我找不到它:-/

嘿伙计们,我猜这是一个简单的正则表达式问题,但请帮帮我好吗?正则表达式对我来说总是那么复杂:-)

在这个例子中:

@2 Lorem ipsum dolor sit amet,consectetur adipiscing elit。Praesent sat amet quam ante,sit amet consectetur ante。Ut non urna in quam adipiscing consectetur et sed lorem。Donec venenatis vehicula porttitor。

我想将@2 转换为

<a href="#2">@2</a>

但用户可能会像“@2Lorem..”一样输入它,没有空格,或者它可能是@38427。我怎样才能抓住它后面的“@”符号和数字并转换为锚点?

编辑:而且 @ 可能在文本的中间,它可能并不总是在开头。

4

2 回答 2

3
preg_replace('/@(\d+)/', '<a name="#$1">@$1</a>', $string)

样本:

php > $x = 'abc @234lorem def';
php > echo preg_replace('/@(\d+)/', '<a name="#$1">@$1</a>', $x);
abc <a name="#234">@234</a>lorem def

\d - any digit
+ - one or more times
于 2013-02-14T20:23:01.047 回答
2

查找:@([0-9]+) 替换:<a href="#$1">@$1</a>

preg_replace('/@([0-9]+)/', '<a name="#$1">@$1</a>', $string);
于 2013-02-14T20:22:19.293 回答