2013-05-22 42 views
0

使用排序規則xxx_german2_ciüue視爲相同,是否有可能使所有出現München的突出顯示如下?如何修改子字符串?

  • 例輸入:"München can also be written as Muenchen."

  • 輸出示例:"<b>München</b> can also be written as <b>Muenchen</b>."

注:這是OK使用一些非SQL編程之外。唯一的要求是,關於哪些字符序列相同的知識取自MySQL歸類。

回答

1

我發現這個表:http://developer.mimer.com/collations/charts/index.tml。當然,他們是依賴於語言的。整理只是comapring算法。對於一般的utf8我不確定,它如何處理特殊字符。

您可以使用它們來找到所需符號並將其替換爲輸出以獲得與示例中相同的結果。但對於那些,你將需要一些編程語言(PHP或其他)。

另一種資源:

http://collation-charts.org/

http://mysql.rjweb.org/doc.php/charcoll(在頁面上向下)

基本上,嘗試谷歌 「排序算法MySQL的utf8_general_ci」 或類似這樣

+0

您可能要指向你的[前面的答案(http://stackoverflow.com/a/16719515/282729)我其他的問題。 – feklee

0

我到底決定用PHP做這一切,因此我的question about which characters are equal with utf8_general_ci

下面是我想出了通過例如:標籤是從文本 $description構建與$term高亮子字符串和特殊字符 轉換。替換並不完整,但對於實際的 用例可能已足夠。

mb_internal_encoding("UTF-8"); 

function withoutAccents($s) { 
    return strtr(utf8_decode($s), 
       utf8_decode('àáâãäçèéêëìíîïñòóôõöùúûüýÿß'), 
       'aaaaaceeeeiiiinooooouuuuyys'); 
} 

function simplified($s) { 
    return withoutAccents(strtolower($s)); 
} 

function encodedSubstr($s, $start, $length) { 
    return htmlspecialchars(mb_substr($s, $start, $length)); 
} 

function labelFromDescription($description, $term) { 
    $simpleTerm = simplified($term); 
    $simpleDescription = simplified($description); 

    $lastEndPos = $pos = 0; 
    $termLen = strlen($simpleTerm); 
    $label = ''; // HTML 
    while (($pos = strpos($simpleDescription, 
          $simpleTerm, $lastEndPos)) !== false) { 
     $label .= 
      encodedSubstr($description, $lastEndPos, $pos - $lastEndPos). 
      '<strong>'. 
      encodedSubstr($description, $pos, $termLen). 
      '</strong>'; 
     $lastEndPos = $pos + $termLen; 
    } 
    $label .= encodedSubstr($description, $lastEndPos, 
          strlen($description) - $lastEndPos); 

    return $label; 
} 

echo labelFromDescription('São Paulo <SAO>', 'SAO')."\n"; 
echo labelFromDescription('München <MUC>', 'ünc'); 

輸出:

<strong>São</strong> Paulo &lt;<strong>SAO</strong>&gt; 
M<strong>ünc</strong>hen &lt;MUC&gt;