2015-04-17 28 views
1

我目前通過@,#,$分裂utf8mb4_unicode_ci從我的輸出數據庫文字和空間使用下面的方法:Pre_split對待像撇號HTML實體

$textSplit = preg_split("/(?=[ @#$])/", $text, -1, PREG_SPLIT_NO_EMPTY); 

但是,如果我分裂了一塊數據庫用單引號的文字,我得到下面的輸出:

// $text is a database value that equals "Is this John's text?" 
$textSplit = preg_split("/(?=[ @#$])/", $text, -1, PREG_SPLIT_NO_EMPTY); 

// Outputs array(5) { [0]=> string(2) "Is" [1]=> string(5) " this" [2]=> string(5) " John&" [3]=> string(6) "#039;s" [4]=> string(5) " text" } 
var_dump($textSplit); 

反正有防止使preg_split從治療撇號類似於HTML實體,以便它分裂了這樣的文本?

array(4) { [0]=> string(2) "Is" [1]=> string(5) " this" [2]=> string(7) " John's" [3]=> string(5) " text" } 
+0

雖然我不知道如何阻止此行爲的preg_split,但這可以通過逆序來輕鬆解決。 – Docteur

+0

你能舉一個'$ text'的例子嗎? – hwnd

+0

@Docteur你能用一些你認爲可以解決這個問題的示例代碼來回答這個問題,所以我可以試一試嗎?如果它有效,我會標記你的答案是正確的。 –

回答

0

嘗試回顧後:

/(?<!&)(?=[ @#$])/ 

它不會匹配以下&任何字符,防止&#xxx相匹配。

1

如果有人遇到同樣的問題,我可以通過使用htmlspecialchars_decode($ text,ENT_QUOTES)來解決它。感謝大家幫助解決這個問題!

+0

格式化代碼內嵌格式代碼('''''htmlspecialchars_decode($ text,ENT_QUOTES)'''' – AlphaDelta