我試圖捕獲在textfield中給出的項目符號點,並試圖用其他名稱替換項目符號項,因爲在將給定文本呈現給用戶之後,它顯示爲?
而不是•。我是這樣測試的:我寫了帶有單詞的文本,並複製粘貼到文本框中。簡單的項目符號點問題
我的願景是:
$test = strstr($input,'•');
if($test){ echo "bullet point found!";
}
,但它不工作或者不醒目,或•
是錯誤的正則表達式趕上要點。
我試圖捕獲在textfield中給出的項目符號點,並試圖用其他名稱替換項目符號項,因爲在將給定文本呈現給用戶之後,它顯示爲?
而不是•。我是這樣測試的:我寫了帶有單詞的文本,並複製粘貼到文本框中。簡單的項目符號點問題
我的願景是:
$test = strstr($input,'•');
if($test){ echo "bullet point found!";
}
,但它不工作或者不醒目,或•
是錯誤的正則表達式趕上要點。
strstr
當您指定•
時不太可能捕獲到•
,因爲前者是本地字符,後者是HTML實體。
但這並不重要:您應該修復相關問題。
您可能有一個編碼問題,不僅限於項目符號點。看到 字符意味着您正在將非UTF-8字符輸入到UTF-8輸出中。
原因,這可能是:
被保存在了錯誤的編碼的源文件(其中,該字符被存儲),例如Windows的1252,而不是UTF-8(檢查「另存爲...」你的IDE的對話框)
使用latin1
作爲連接編碼(即使該表是UTF-8)
請參閱UTF-8 all the way through以瞭解要查看的全面列表。
謝謝,夥計。我會試試這個 – doniyor 2013-02-13 17:07:49
嘗試•
而不是•
。
這很可能是HTML不流通&牛市,但HTML equivilent。
如果找不到它,請查看HTMLEntities(),這實際上可能是更好的方法(除非也許你只是想要處理子彈)。
編輯: 解碼的HTML與html_entity_decode(),重新編碼到用戶與ヶ輛()。
爲什麼要使用HTML實體? – 2013-02-13 13:50:24
因爲從來沒有真正明確他想要做什麼;這是我的理解(這可能是錯誤的),PHP不一定使用與HTML相同的特殊字符代碼,這意味着在HTML文本中查找PHP代碼可能不起作用。這些函數幫助轉換,以便PHP字符串可以被操縱。對所有UTF-8編碼可能並不總是一種選擇。 – StuckAtWork 2013-02-13 13:53:26
首先,在檢查輸入之前,請確保將所有字符編碼爲與其等效的HTML(其中•
是)。所以像這樣:
$test = strstr(htmlentities($input), '•');
if($test) {
echo "bullet point found!";
}
但是,如果您使用編碼的htmlentities
輸入,所有的UTF-8字符應呈現精細到用戶之後,作爲存儲不需要處理UTF-8了,從而消除僞影。
另外:請確保在將數據保存到數據庫時轉義用戶輸入,最好使用與在PDO中看到的綁定參數等效。
您應該改正相關問題。你可能有一個編碼問題,不僅限於項目符號點。 – 2013-02-13 13:37:46
我正在爲utf-8頁面服務 – doniyor 2013-02-13 13:43:06