Accent-duyarsız substring eşleştirme

0 Cevap php

Ben bir InnoDB tablo (utf8_spanish_ci harmanlama) verileri elde ve bir HTML belgesi (UTF-8 charset) görüntüler bir arama özelliğe sahip. Kullanıcı türleri bir alt ve ilk alt olay vurgulanır maçları, örneğin bir listesini alır:

Matches for "AL":

Álava
<strong>Al</strong>bacete
<strong>Al</strong>mería
Ciudad Re<strong>al</strong>
Málaga

Eğer örnekte de görebileceğiniz gibi, arama (MySQL otomatik olarak ilgilenir) durumda ve aksan farklılıkları yok sayar. Ancak, maçları hightlight için kullanıyorum kod ikincisi yapmak için başarısız olur:

<?php

private static function highlightTerm($full_string, $match){
    $start = mb_stripos($full_string, $match);
    $length = mb_strlen($match);

    return
        htmlspecialchars( mb_substr($full_string, 0, $start)) .
        '<strong>' . htmlspecialchars( mb_substr($full_string, $start, $length) ) . '</strong>' .
        htmlspecialchars( mb_substr($full_string, $start+$length) );
}

?>

Olası tüm varyasyonları sabit kodlama anlamına gelmez bu düzeltmek için mantıklı bir yolu var mı?

Update: Sistem özellikleri PHP/5.2.14 ve MySQL/5.1.48 vardır

0 Cevap