即使在使用 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='&nbsp;';
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)

https://3v4l.org/WXTGR