PHP pre_split 丢失第一个字符

我有以下字符串,并且想要将名称与发票 ID 分开。该名称可以有一个空格,也可能有一个连字符。


$invoice_id ="梅-安·简-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

我如何找回第一个角色?


临摹微笑
浏览 93回答 1
1回答

婷婷同学_

您可以使用正向前瞻(?=来分割右侧的数字,而不是匹配它。这样你就可以保留数字。-(?=[0-9])正则表达式演示|&nbsp;PHP演示$invoice_id ="May-Ann Jane-28188-1600086909";$exploded = preg_split('/-(?=[0-9])/', $invoice_id, 3);print_r($exploded);输出Array(&nbsp; &nbsp; [0] => May-Ann Jane&nbsp; &nbsp; [1] => 28188&nbsp; &nbsp; [2] => 1600086909)
打开App,查看更多内容
随时随地看视频慕课网APP