【问题标题】:Can't explode PHP string using blank space as delimiter无法使用空格作为分隔符来分解 PHP 字符串
【发布时间】:2019-12-10 15:06:50
【问题描述】:

我正在尝试使用空格作为分隔符将日期分解为字符串。我检查过这个字符串确实是一个字符串。

该字符串是从网页中抓取的,并在我删除了围绕该值的 HTML 后返回一个类似于“19 Jul 19”的值。

如果我复制并粘贴值,例如 19 Jul 19,我可以成功爆炸

作品

$str = trim("19 Jul 19");
print_r (explode(" ",$str));

作品

$val = "19 Jul 19";
$str = trim($val);
print_r (explode(" ",$str));

在 $str_meeting_date[0] 是 19 年 7 月 19 日的情况下不起作用

$val = $str_meeting_date[0];
$str = trim($val);
print_r (explode(" ",$str));

返回数组([0] => 19 年 7 月 19 日)

我检查过没有特殊字符。用作 val 的字符串遵循许多先前的分解函数来获取日期。

我很困惑!

另外,我提前道歉 - 这是我提出的第一个问题,如果我解释得过多或不足,我会在下一次学习。

【问题讨论】:

  • 我检查了你的代码,它应该可以工作,我无法重现:sandbox.onlinephpfunctions.com/code/…
  • 此时应该很明显它不是标准空间。 Hexeditor/bin2hex() 而不是只看浏览器的版本?
  • print_r() 倾向于忽略和/或隐藏有用的信息。请改用var_dump()。但也要看看十六进制表示。我敢打赌那些空间不是0x20s。

标签: php explode


【解决方案1】:

你的字符串肯定有空格以外的东西,你可以在preg_split 上应用正则表达式,它适用于空格和制表符

$str1="19     Jul 19";
$str2="19 Jul 19";
print_r(preg_split('/\s+/', $str1));
print_r(preg_split('/\s+/', $str2));

输出

Array ( [0] => 19 [1] => Jul [2] => 19 ) Array ( [0] => 19 [1] => Jul [2] => 19 )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-16
    • 2013-09-09
    • 1970-01-01
    • 2016-04-28
    • 2014-02-10
    • 2015-10-17
    • 1970-01-01
    相关资源
    最近更新 更多