即使在使用 html_entity_decode 时,strpos 也会使用 html 个实体返回 false
strpos returning false with html entities even when using html_entity_decode
我正在尝试在可能包含或不包含 html 实体的字符串中搜索子字符串,例如 但即使使用 html_entity_decode() 它仍然 returns false
$str='online shop';
echo html_entity_decode($str);
//outputs: online shop
var_dump(strpos(html_entity_decode($str),'online shop'));
//outputs: bool(false)
!== space (20)
,解码后实际等于2字节NO-BREAK SPACE C2 A0
.
U+00A0 | \xc2\xa0 |   | NO-BREAK SPACE
您可以使用以下方法进行测试:
<?php
//
$str=' ';
var_dump(html_entity_decode($str));
这将产生:string(2) " "
要修复,请将 nbsp space 替换为普通的:
var_dump(strpos(str_replace("\xc2\xa0", ' ', html_entity_decode($str)), 'online shop'));
结果:int(0)
我正在尝试在可能包含或不包含 html 实体的字符串中搜索子字符串,例如 但即使使用 html_entity_decode() 它仍然 returns false
$str='online shop';
echo html_entity_decode($str);
//outputs: online shop
var_dump(strpos(html_entity_decode($str),'online shop'));
//outputs: bool(false)
!== space (20)
,解码后实际等于2字节NO-BREAK SPACE C2 A0
.
U+00A0 | \xc2\xa0 |   | NO-BREAK SPACE
您可以使用以下方法进行测试:
<?php
//
$str=' ';
var_dump(html_entity_decode($str));
这将产生:string(2) " "
要修复,请将 nbsp space 替换为普通的:
var_dump(strpos(str_replace("\xc2\xa0", ' ', html_entity_decode($str)), 'online shop'));
结果:int(0)