簡體   English   中英

PHP MySQL搜索西里爾字符

[英]PHP MySQL search cyrillic characters

我想從西里爾文輸入優化我的搜索SQL查詢。

如果用戶輸入“čšž”數據庫,則返回結果為“čšž”和“ csz”。

$result = mysqli_query($con,"SELECT * FROM Persons WHERE name = ?");

SQL或PHP應該將字符轉換為非西里爾字母。

有任何想法嗎?

您應該對列(或表或整個數據庫)使用UTF8_unicode_ci排序規則,然后數據庫應處理所需的所有操作。

這將使用iconv來解決問題

// your input
$input = "Fóø Bår";

setlocale(LC_ALL, "en_US.utf8");

// this will remove accents and output standard ascii characters
$output = iconv("utf-8", "ascii//TRANSLIT", $input);

// do whatever you want with your output, for example use it in your MySQL query
// or just "echo" it, for demonstration
echo $output;

請注意,當服務器上安裝了錯誤版本的iconv時,這可能無法正常工作

服務器正在使用錯誤的iconv實現。 它具有glibc版本,而不是必需的libiconv版本。

在這種情況下,您可以使用這種適用於大多數情況的丑陋技巧:

function stripAccents($stripAccents){
  return strtr($stripAccents,'àáâãäçèéêëìíîïñòóôõöùúûüýÿÀÁÂÃÄÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝ','aaaaaceeeeiiiinooooouuuuyyAAAAACEEEEIIIINOOOOOUUUUY');
}

取自這個答案

暫無
暫無

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

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