不同的行为
问题描述:
这是我用来与“#”字码在一开始可点击:不同的行为
$value = htmlentities($value, ENT_QUOTES, 'UTF-8');
preg_replace("/#([\pL\pN.]+)/u", "<span onclick='opn(event, ".$value.", \"\\1\");'>\\0</span>", $value);
把ENT_HTML5
到第二个参数的结束htmlentities
后:
htmlentities($value, ENT_QUOTES | ENT_HTML5, 'UTF-8')
开头的“#”字不再可点击。为什么?
答
php> var_dump(htmlentities('#foo',ENT_QUOTES,'UTF-8')); string(4) "#foo" php> var_dump(htmlentities('#foo',ENT_QUOTES|ENT_HTML5,'UTF-8')); string(8) "#foo"
希望这回答了你的问题:正则表达式不能取代你的文本,因为它不符合任何更多。
那么在这种情况下我该怎么办?没有ENT_HTML5的情况与ENT_HTML5一样吗? – May
改用['htmlspecialchars'](http://php.net/htmlspecialchars)? –
我用str_replace(从#到#)颠倒了逃生,现在每件事情都很好。我希望这样做没有安全问题 – May