所以我有2个相似的字符串
<link href='https://fonts.googleapis.com/css?family=Open+Sans' rel='stylesheet' type='text/css'>
我一直在数据库中做一些查询,当我注意到这些相似的单词返回不同的结果...所以我写了这个小代码来逐字符地比较它们
$no_space = ',بشکه,';
$with_space = ',بشکه,';
所以这是我运行在unicode
上设置资源管理器文本编码的代码时的结果$no_space = ',بشکه,';
$with_space = ',بشکه,';
echo '<br /> ------------------------------------------ <br />';
$string = $no_space;
echo ' total length : '.mb_strlen( $string , "UTF-8" ).'<br />' ;
for( $i = 0; $i < mb_strlen( $string , "UTF-8" ); $i++ ) {
$char_b = mb_substr( $string , $i, 1 , "UTF-8");
echo $i . ' -> '.$char_b.'<br />' ;
}
echo '<br /> ------------------------------------------ <br />';
$string = $with_space;
echo ' total length : '.mb_strlen( $string , "UTF-8" ).'<br />' ;
for( $i = 0; $i < mb_strlen( $string , "UTF-8" ); $i++ ) {
$char_b = mb_substr( $string , $i, 1 , "UTF-8");
echo $i . ' -> '.$char_b .'<br />';
}
你可以看到第二个字符串的第五个字符中有一个空格 但是当我在拉丁编码上使用explorere运行代码时,我得到了这个结果
total length : 6
0 -> ,
1 -> ب
2 -> ش
3 -> ک
4 -> ه
5 -> ,
------------------------------------------
total length : 7
0 -> ,
1 -> ب
2 -> ش
3 -> ک
4 -> ه
5 ->
6 -> ,
第五个字符给了我 total length : 6
0 -> ,
1 -> ب
2 -> Ø´
3 -> Ú©
4 -> Ù‡
5 -> ,
------------------------------------------
total length : 7
0 -> ,
1 -> ب
2 -> Ø´
3 -> Ú©
4 -> Ù‡
5 -> ‌
6 -> ,
这显然不是空格,我知道如果我在字符串中添加一个空格我会在输出上得到一个空格
那么‌
是什么?如何从我已经尝试过的字符串中删除它
‌
甚至是像这样的傻事
$with_space= html_entity_decode($with_space, ENT_QUOTES, "UTF-8");
请注意我想从任何字符串中删除这些字符,而不仅仅是在数据库中