2016-08-13 45 views
0

這是我用來與「#」字碼在一開始可點擊:不同的行爲

$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') 

開頭的「#」字不再可點擊。爲什麼?

回答

0
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) "&num;foo" 

希望這回答了你的問題:正則表達式不能取代你的文本,因爲它不符合任何更多。

+0

那麼在這種情況下我該怎麼辦?沒有ENT_HTML5的情況與ENT_HTML5一樣嗎? – May

+0

改用['htmlspecialchars'](http://php.net/htmlspecialchars)? –

+0

我用str_replace(從#到#)顛倒了逃生,現在每件事情都很好。我希望這樣做沒有安全問題 – May