preg_replace #hashtags - 非 alpa 数字
preg_replace #hashtags - non alpa numeric
我遇到以下代码问题:
$input = '#2weeksago #1year&2weeksold #keyword';
$output = preg_replace('/(?:.^|\s)#(\w+)/', ' <span class="hashtag">#</span>', $input);
print($output);
我希望主题标签中的每个词都用 span-attribute 包围。
这适用于大多数关键字,但其中带有符号的主题标签不起作用。
输出
<span class="hashtag">#2weeksago</span> <span class="hashtag">#1year</span>&2weeksold <span class="hashtag">#keyword</span>
有人可以帮助扩展这个 preg_replace 吗?
如果您不想在 "word boundaries" 处中断,而是继续匹配直到下一个白色 space 字符,那么您需要完全这样做:
<?php
$input = '#2weeksago #1year&2weeksold #keyword';
$output = preg_replace('/(?:.^|\s|^)#([^\s]+)/', ' <span class="hashtag">#</span>', $input);
print($output);
输出显然是:
<span class="hashtag">#2weeksago</span> <span class="hashtag">#1year&2weeksold</span> <span class="hashtag">#keyword</span>
我遇到以下代码问题:
$input = '#2weeksago #1year&2weeksold #keyword';
$output = preg_replace('/(?:.^|\s)#(\w+)/', ' <span class="hashtag">#</span>', $input);
print($output);
我希望主题标签中的每个词都用 span-attribute 包围。 这适用于大多数关键字,但其中带有符号的主题标签不起作用。
输出
<span class="hashtag">#2weeksago</span> <span class="hashtag">#1year</span>&2weeksold <span class="hashtag">#keyword</span>
有人可以帮助扩展这个 preg_replace 吗?
如果您不想在 "word boundaries" 处中断,而是继续匹配直到下一个白色 space 字符,那么您需要完全这样做:
<?php
$input = '#2weeksago #1year&2weeksold #keyword';
$output = preg_replace('/(?:.^|\s|^)#([^\s]+)/', ' <span class="hashtag">#</span>', $input);
print($output);
输出显然是:
<span class="hashtag">#2weeksago</span> <span class="hashtag">#1year&2weeksold</span> <span class="hashtag">#keyword</span>