preg_replace #hashtags - 非alpa数字

时间:2018-03-14 14:02:48

标签: php preg-replace

我遇到以下代码的问题:

    $input = '#2weeksago #1year&2weeksold #keyword';

    $output = preg_replace('/(?:.^|\s)#(\w+)/', ' <span class="hashtag">#$1</span>', $input);

    print($output);

我希望用span-attribute包围的hashtag中的每个单词。 这适用于大多数关键字,但带有符号的主题标签不起作用。

输出

 <span class="hashtag">#2weeksago</span> <span class="hashtag">#1year</span>&2weeksold <span class="hashtag">#keyword</span>

有人可以帮助扩展这个preg_replace吗?

1 个答案:

答案 0 :(得分:1)

如果你不打算在#34;字边界处打破&#34;但继续匹配直到下一个空格字符,那么你需要做到这一点:

<?php
$input = '#2weeksago #1year&2weeksold #keyword';
$output = preg_replace('/(?:.^|\s|^)#([^\s]+)/', ' <span class="hashtag">#$1</span>', $input);
print($output);

输出显然是:

<span class="hashtag">#2weeksago</span> <span class="hashtag">#1year&2weeksold</span> <span class="hashtag">#keyword</span>