php – str_replace(或preg_replace?)接受并保留重音字符和大写字母
发布时间:2020-05-31 00:56:28 所属栏目:PHP 来源:互联网
导读:我正在为一个网站构建一个法语 MySQL数据库,该网站将在某些地方包含重音字符和大写字母.所有这一切都很完美. 现在我设计了一个显示数据库内容的表(完美地工作),并在其上面放置了一个搜索栏.搜索的SQL查询按预期工作(使用LIKE,它不区分大小写并将重音字符视为
|
我正在为一个网站构建一个法语 MySQL数据库,该网站将在某些地方包含重音字符和大写字母.所有这一切都很完美. 现在我设计了一个显示数据库内容的表(完美地工作),并在其上面放置了一个搜索栏.搜索的SQL查询按预期工作(使用LIKE,它不区分大小写并将重音字符视为基本字母,这令人惊讶地完全符合我的要求). 这是我的问题:我想直接在表格中突出显示所有搜索实例.我得到了部分工作: str_ireplace($_POST["search"],'<span class="highlight">' . $_POST["search"] . "</span>",$row['First_Name']); 但是这些问题会发生: >它根据搜索输入更改表格中的大写字母 我一直在寻找过去3个小时没有运气的解决方案.我开始阅读有关preg_replace()的内容,但似乎无法找到正确的方法,而无需为每个可能的重音字符编写无尽的代码.如果我可以模仿SQL Query使用“LIKE”做什么但是在php或其他东西中会很棒. 你这样做,你将始终显示用户输入的内容,实际上PHP不会像MySQL LIKE那样进行相同的宽松比较.这是我写的一个处理这个问题的函数,包括大多数法语重音字符. function highlight_substring( $string,$substring )
{
if( empty( $string ) || empty( $substring ) ) return false;
$normal = array( 'à','é','è','ê','','','','','ò','','','ü','ù','' );
$flat = array( 'a','e','i','o','u','c' );
$str = mb_strtolower( $string );
$str = str_replace( $normal,$flat,$str );
$sub = mb_strtolower( $substring );
$sub = str_replace( $normal,$sub );
$pos = mb_strpos( $str,$sub );
if( $pos !== false )
{
$var = mb_substr( $string,$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> ! (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
