【问题标题】:Abnormal PHP string length and when searching Elasticsearch using PHPPHP 字符串长度异常以及使用 PHP 搜索 Elasticsearch 时
【发布时间】: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 步的输出是:

空字符串

问题:

  1. 字符总数约为231。显然少于974。
  2. mb_strlen($value2) = 974,将mb_strlen替换为strlen时,得到相同的974
  3. 调用php mb_substr($value2)时,返回空字符串。使用 substr,得到相同的空字符串。

是什么原因以及如何解决? 谢谢。

【问题讨论】:

  • 我认为它可能会将某些字符转换为 ASCII。试试strlen(utf8_decode($value2));mb_strlen($value2, 'UTF-8'); 一定是编码问题。

标签: php string elasticsearch substr strlen


【解决方案1】:

对不起,我修好了。 字符串的真实文本包含大量空格字符,它们不会在浏览器中呈现。删除它们,一切正常。

【讨论】:

    猜你喜欢
    • 2015-08-01
    • 1970-01-01
    • 2012-05-22
    • 2012-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-06
    相关资源
    最近更新 更多