我的目標是收集鳴叫般的字符串的每個哈希標籤爲:preg_match_all切漁獲
$string = "i like to #studyéléctricité in french";
preg_match_all('/#(\w+)/',$string,$hashtags);
它正確地抓住了這個主題標籤不帶重音,並將它們放入數組$#標籤。
但隨着我的字符串,它會收集只有正常捕撈的一部分,切斷它的第一個強調字符遇到:
var_dump(mb_detect_encoding($string));
var_dump($hashtags[0]);
它返回
分字符串「UTF-8 '(長度= 5)
陣列(大小= 1)0 =>字符串 '#study'(長度= 6)
解測試:
1)字符串在UTF-8所以我嘗試特定的正則表達式
preg_match_all('/#(\w+)/u', $string, $hashtags);
preg_match_all('/#(pL+)/u', $string, $hashtags);
preg_match_all('/#(p{L}+)/u', $string, $hashtags);
preg_match_all('/#(\pL+)/u', $string, $hashtags);
preg_match_all('/#(\p{L}+)/u', $string, $hashtags);
這些所有返回的空陣列。
2)我試圖改變編碼成ISO-8859-15:
$string = mb_convert_encoding($string, 'ISO-8859-15', 'UTF-8');
preg_match_all('/#(\w+)/',$string,$hashtags);
var_dump(mb_detect_encoding($string));
var_dump($hashtags[0]);
它返回:
字符串 'ASCII'(長度= 5)
陣列(大小= 1)0 =>字符串'#studylctricit'(長度= 14)
3)我也嘗試過iconv:
$string = iconv($string, 'UTF-8', 'ISO-8859-15');
preg_match_all('/#(\w+)/',$string,$hashtags);
var_dump(mb_detect_encoding($string));
var_dump($hashtags[0]);
它返回:
字符串 'ASCII'(長度= 5)
陣列(大小= 1)0 =>字符串 '#study'(長度= 6)
我該如何在這種情況下收集帶有突出字符的#標籤?
感謝您提前給我們提供任何幫助或建議!
傑夫