这样做的方式,您将始终显示用户输入的内容,而且确实 PHP 不会像 MySQL 那样进行宽松的比较LIKE
。
这是我编写的一个处理这个问题的函数,包括大多数法语重音字符。
function highlight_substring( $string, $substring )
{
if( empty( $string ) || empty( $substring ) ) return false;
$normal = array( 'à', 'é', 'è', 'ê', 'ë', 'î', 'ï', 'ô', 'ò', 'ö', 'û', 'ü', 'ù', 'ç' );
$flat = array( 'a', 'e', 'e', 'e', 'e', 'i', 'i', 'o', 'o', 'o', 'u', 'u', 'u', 'c' );
$str = mb_strtolower( $string );
$str = str_replace( $normal, $flat, $str );
$sub = mb_strtolower( $substring );
$sub = str_replace( $normal, $flat, $sub );
$pos = mb_strpos( $str, $sub );
if( $pos !== false )
{
$var = mb_substr( $string, 0, $pos ).'<span class="highlight">'.mb_substr( $string, $pos, mb_strlen( $substring ) ).'</span>';
$var .= mb_substr( $string,( bcadd( mb_strlen( $substring ), $pos ) ) );
$string = $var;
}
return $string;
}
随意适应和改进;)
用法
echo highlight_substring( 'Allons à l’école !', 'ecole' ); // user input 'ecole'
echo highlight_substring( 'Allons à l’École !', 'ecole' ); // user input 'ecole'
echo highlight_substring( 'Allons à l’école !', 'Ecole' ); // user input 'Ecole'
将输出:
Allons à l’<span class="highlight">école</span> !
Allons à l’<span class="highlight">École</span> !
Allons à l’<span class="highlight">école</span> !