【发布时间】:2019-04-25 21:54:17
【问题描述】:
我从 Elasticsearch 获得了异常的 PHP 字符串。
第一步:php curl调用弹性搜索得到结果$value,
第 2 步:php $value2 = strip_tags($value); // to remove all html tags
第 3 步:var_dump($value2)
第 4 步:echo 'len='.mb_strlen($value2);
第 5 步:echo 'substr='.mb_substr($value2);
第 3 步输出为:
string(974) " Ginger 从不相信饮食可以帮助治疗癌症,但很好 尝试。 2018-01-22 11:20:21 腺体完全没有零食?一定有一些 零食上榜了,对... 2018-01-22 10:25:32 相关文章:如何 用饮食治疗膀胱癌?”
第 4 步的输出是:
len=974
第 5 步的输出是:
空字符串
问题:
- 字符总数约为231。显然少于974。
-
mb_strlen($value2) = 974,将mb_strlen替换为strlen时,得到相同的974 - 调用
php mb_substr($value2)时,返回空字符串。使用 substr,得到相同的空字符串。
是什么原因以及如何解决? 谢谢。
【问题讨论】:
-
我认为它可能会将某些字符转换为 ASCII。试试
strlen(utf8_decode($value2));或mb_strlen($value2, 'UTF-8');一定是编码问题。
标签: php string elasticsearch substr strlen