具有获取txt文件,替换换行符,然后链接和主题标签的代码。
#当主题标签在换行符之后时,它不会替换主题标签。不知道在regrex的哪个地方失败。
// replace line breaks
$txt = str_replace('<br />','<br />',$txt);
// replace links
$txt = preg_replace_callback('@(https?://([-\w\.]+)+(:\d+)?(/([-\w/_\.]*(\?\S+)?)?)?)@', function($m) { return '<a href="'.$m[1].'" target="_blank">'.substr($m[1], 0, 30).'...</a>'; }, $txt);
// replace hashtags
$txt = preg_replace('/(?<!\S)#([0-9a-zA-Z]+)/m', '<a href="index.php?q=$1">#$1</a>', $txt);
(?<!\S)
表示井号之前的字符必须是空白字符(不是非空白(\S
))。 >
中的<br />
不满足该要求。您可以断言#标签之前的字符不是word
字符([A-Za-z0-9_]
):
$txt = preg_replace('/(?<!\w)#([0-9a-zA-Z]+)/m', '<a href="index.php?q=$1">#$1</a>', $txt);