微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP pre_split失去第一个字符

如何解决PHP pre_split失去第一个字符

我有以下字符串,并希望从发票编号中拆分名称。该名称可以有一个空格,也可以有一个连字符。

$ invoice_id =“ May-Ann Jane-28188-1600086909”;

    $invoice_id ="May-Ann Jane-28188-1600086909";
    
    $exploded = preg_split('/[-]+[0-9]/',$invoice_id,3 ); 

foreach($exploded as $index => $answer){ 
  if (!empty($answer)){ 
    echo $index.": ".$answer."<br />"; 
  } 
  
} 

$prefix = $exploded[0]; 
$invoiceid = $exploded[1]; 
$transid = $exploded[2]; 

echo '<BR>list2:<BR />';  
echo "prefix :".$prefix."<br />"; 
echo "invoiceid :".$invoiceid."<br />"; 

输出中,任何数字的第一个字符都会丢失:

0: May-Ann Jane
1: 8188
2: 600086909

list2:
prefix :May-Ann Jane
invoiceid :8188
transid :600086909

我如何找回第一个字符?

解决方法

您可以使用正向先行(?=断言右侧的数字而不是匹配数字来进行拆分。这样,您就可以保留数字。

-(?=[0-9])

Regex demo | Php demo

$invoice_id ="May-Ann Jane-28188-1600086909";
$exploded = preg_split('/-(?=[0-9])/',$invoice_id,3);
print_r($exploded);

输出

Array
(
    [0] => May-Ann Jane
    [1] => 28188
    [2] => 1600086909
)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。