這裏的編碼完全拙劣地描述了一個簡單的操作。我只想檢查一個字符串的第一個字符是否是£。我的php文件本身編碼爲UTF8-沒有BOM。謝謝!字符串的奇怪的字符編碼問題
<?php
print "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.1//EN' ";
print "'http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd'>\n";
print "<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='eng' lang='en'>\n";
print "<head>\n";
print "<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />\n";
print "<title>WAMP</title>\n";
print "<meta name='Description' content='Website Under Construction' />\n";
print "</head>\n";
print "<body>\n";
print "<p>\n";
$temp = "£Hello";
$charArray = preg_split('//', $temp, -1);
// preg_match_all('/./', $temp, $charArray);
print_r ($charArray);
print "<br />First Char: $temp[0]";
print "</p>\n";
print "</body>\n";
print "</html>";
?>
輸出:
Array ([0] => [1] => � [2] => � [3] => H [4] => e [5] => l [6] => l [7] => o [8] =>)
First Char: �
所需的輸出:
Array ([0] => [1] £ [2] => H [3] => e [4] => l [5] => l [6] => o [7] =>)
First Char: £
我不知道PHP,但我知道這對正則表達式一個Unicode標誌。當你執行'$ charArray = preg_split('// u',$ temp,-1)時,你會得到什麼?''? –
是的,這有效,但我真的這條線正常工作:if($ temp [0] =='£'){print'Yay!'} – skibulk
我不明白你的意思。數組的第一項總是空的,因爲空正則表達式匹配字符串開始處的空白空間。如何使用'preg_match_all('/./ u',$ temp,$ charArray);'? –