簡體   English   中英

將通過表單提交的UTF-8字符顯示回表單的問題

[英]Issue displaying UTF-8 characters submitted through a form back into the form

我有一個用戶可以輸入搜索字詞的表單,基本上它是頁面頂部的搜索欄。 如果用戶輸入了任何內容,那么新頁面也會包含他們輸入的內容,以免他們忘記,就像谷歌一樣。

首先將頁面設置為使用UTF-8(頁面正確地采用UTF-8編碼):

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

輸入框是:

<input class="sb_input" name="q" type="text" value="<?php if (isset($displaysearch)) echo $displaysearch; ?>" />

上面是一些用於清理搜索詞的PHP代碼:

$search=$_GET['q'];
$displaysearch=preg_replace('@[^\p{L}| ]@','',trim($search));

問題是,如果我進入Über ,新頁面上的搜索框將顯示 ber ,我無法弄清楚它出錯的地方。

HTML <meta>標簽可能是最不相關的位。 確保你已經閱讀並理解了UTF-8 另外:

  • 您沒有測試是否定義了$_GET['q'] 這表明您已禁用完整錯誤報告。 如果是這樣的話,那么在你走得更遠之前,你需要先解決這個問題; 沒有錯誤消息的幫助就不可能編碼。 這是一個簡短的解釋
  • 您正在將未轉義的文本注入HTML:您需要使用htmlspecialchars()
  • 您在正則表達式中省略了u修飾符 ,因此您的文本將作為單字節處理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM