【问题标题】:Using preg_split() to extract a part of a number on first occurrence of a particular number使用 preg_split() 在第一次出现特定数字时提取数字的一部分
【发布时间】:2022-01-07 09:22:30
【问题描述】:

我试图在第一次出现非零时提取字符串0044800 999999 的一部分。我正在使用 preg_split() :

$str = preg_split("/[1-9]/", "0044800 999999", 2);
var_dump($str[1]);

问题是当这个操作完成时,它也会删除匹配的非零数字。例如。 0044800 999999 的结果是 4800 999999 而不是 44800 999999

我做错了什么?

【问题讨论】:

  • 你想要两个单独的数字(4800999999 还是一个字符串?零总是在字符串的开头?
  • 目的是提取拆分的右侧部分,例如00239023 变为 239023 @MaartenDev。
  • ltrim($str,"0")怎么样

标签: php regex preg-split


【解决方案1】:

您可以使用可选的前导零

$str = preg_split("/^0*/", "0044800 999999", 2);
var_dump($str[1]);

输出

string(12) "44800 999999"

或者您可以拆分 1 个或多个前导零,并检查返回的数组是否有 2 个部分,以防字符串不包含前导零。


您可以使用更精确的方法删除前导零,并使用捕获组来匹配后跟空格和数字的数字。

$re = '/^0*(\d+(?:\h+\d+)*)$/';
$str = '0044800 999999';
$result = preg_replace($re, '$1', $str);
var_dump($result);

输出

string(12) "44800 999999"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多