我基本上试图将字符串中任何带有哈希标记的单词转换为链接:
以下是我的代码:
public function linkify($text)
{
// ... generating $url
$text = preg_replace("/\B#(\w+)/", "<a href=" . $url . "/$1>#$1</a>", $text);
return $text;
}
除了$ text包含单引号的情况外,它的效果非常好。这是
例1:
“你的#name是什么?”
结果:“你的#name是什么?”工作正常。
例2:
“你的#name是什么?”
有关如何使用PHP摆脱单引号问题的想法吗?
EDIT1: 只是为了获取信息,我得到了html_entity_decode($ text)之前或之后 “什么&amp; #039;是你的#name?”
答案 0 :(得分:1)
像这样。
$string = "' \'' '";
$string = preg_replace("#[\\\\']#", "\'", $string);
答案 1 :(得分:1)
有些东西正在保护你的html实体。如果字符串来自get / post请求,这可以节省您的生命 - 但是它来自可信来源只需使用html_entity_decode将其转换回来。正如你可能已经意识到的那样,这是一种表达单引号的方式。
答案 2 :(得分:1)
如果问题是html_entities,那么也许你只需要html_entity_decode你的$ text
$text = preg_replace("/\B#(\w+)/", "<a href=" . $url . "/html_entity_decode($1)>#$1</a>", $text);
答案 3 :(得分:0)
感谢大家的建议,我终于用这个解决了这个问题:
html_entity_decode($str, ENT_QUOTES);