我已经检查了基于facebook hashtag系统的教程,在插入此代码后,我注意到preg_replace函数中存在一个错误,使链接可以点击。
<?php
function convert_clickable_links($message) {
$parsedMessage = preg_replace(array('/(?i)\b((?:https?:\/\/|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:\'".,<>?«»""'']))/', '/(^|[^a-z0-9_])@([a-z0-9_]+)/i', '/(^|[^a-z0-9_])#([a-z0-9_]+)/i'), array('<a href="$1" target="_blank">$1</a>', '$1<a href="">@$2</a>', '$1<a href="index.php?hashtag=$2">#$2</a>'), $message);
return $parsedMessage;
}
$message = '#test #test #test this is a hashtag test';
echo convert_clickable_links($message);
?>
由于某种原因在Dreamweaver中我收到语法错误,当我上传代码时,我收到零帖子因为功能被破坏了。我似乎无法弄明白。想知道是否有人可以提供帮助。
答案 0 :(得分:1)
这些
<>?«»""'']
应更改为<>?«»“”‘’]
完整(固定)线:
$parsedMessage = preg_replace(array('/(?i)\b((?:https?:\/\/|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:\'".,<>?«»“”‘’]))/', '/(^|[^a-z0-9_])@([a-z0-9_]+)/i', '/(^|[^a-z0-9_])#([a-z0-9_]+)/i'), array('<a href="$1" target="_blank">$1</a>', '$1<a href="">@$2</a>', '$1<a href="index.php?hashtag=$2">#$2</a>'), $message);
启用error reporting会抛出:
解析错误:语法错误,意外&#39;]))/&#39;&#39; (T_CONSTANT_ENCAPSED_STRING),期待&#39;)&#39;在第4行的/index.php中
HTML来源:
<a href="index.php?hashtag=test">#test</a> <a href="index.php?hashtag=test">#test</a> <a href="index.php?hashtag=test">#test</a> this is a hashtag test
OP:
它已经通过逃避你已经孤立的角色 -
来解决,<>?«»""\'\']
转出单引号,解决了问题。
,<>?«»""\'\']