2013-02-13 98 views
0

我試圖捕獲在textfield中給出的項目符號點,並試圖用其他名稱替換項目符號項,因爲在將給定文本呈現給用戶之後,它顯示爲?而不是•。我是這樣測試的:我寫了帶有單詞的文本,並複製粘貼到文本框中。簡單的項目符號點問題

我的願景是:

$test = strstr($input,'•'); 
if($test){ echo "bullet point found!"; 
} 

,但它不工作或者不醒目,或•是錯誤的正則表達式趕上要點。

+3

您應該改正相關問題。你可能有一個編碼問題,不僅限於項目符號點。 – 2013-02-13 13:37:46

+0

我正在爲utf-8頁面服務 – doniyor 2013-02-13 13:43:06

回答

1

strstr當您指定•時不太可能捕獲到,因爲前者是本地字符,後者是HTML實體。

但這並不重要:您應該修復相關問題。

您可能有一個編碼問題,不僅限於項目符號點。看到 字符意味着您正在將非UTF-8字符輸入到UTF-8輸出中。

原因,這可能是:

  • 被保存在了錯誤的編碼的源文件(其中,該字符被存儲),例如Windows的1252,而不是UTF-8(檢查「另存爲...」你的IDE的對話框)

  • 使用latin1作爲連接編碼(即使該表是UTF-8)

  • 數據庫連接

請參閱UTF-8 all the way through以瞭解要查看的全面列表。

+0

謝謝,夥計。我會試試這個 – doniyor 2013-02-13 17:07:49

0

嘗試•而不是•

Special Characters in HTML.

這很可能是HTML不流通&牛市,但HTML equivilent。

如果找不到它,請查看HTMLEntities(),這實際上可能是更好的方法(除非也許你只是想要處理子彈)。

編輯: 解碼的HTML與html_entity_decode(),重新編碼到用戶與ヶ輛()。

+0

爲什麼要使用HTML實體? – 2013-02-13 13:50:24

+0

因爲從來沒有真正明確他想要做什麼;這是我的理解(這可能是錯誤的),PHP不一定使用與HTML相同的特殊字符代碼,這意味着在HTML文本中查找PHP代碼可能不起作用。這些函數幫助轉換,以便PHP字符串可以被操縱。對所有UTF-8編碼可能並不總是一種選擇。 – StuckAtWork 2013-02-13 13:53:26

0

首先,在檢查輸入之前,請確保將所有字符編碼爲與其等效的HTML(其中•是)。所以像這樣:

$test = strstr(htmlentities($input), '•'); 

if($test) { 
    echo "bullet point found!"; 
} 

但是,如果您使用編碼的htmlentities輸入,所有的UTF-8字符應呈現精細到用戶之後,作爲存儲不需要處理UTF-8了,從而消除僞影。

另外:請確保在將數據保存到數據庫時轉義用戶輸入,最好使用與在PDO中看到的綁定參數等效。