PHP pre_split 丢失第一个字符
PHP pre_split looses first character
我有以下字符串,想从 invoiceid 中拆分名称。该名称可以有一个 space,也可以有一个连字符。
$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])
$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
)
我有以下字符串,想从 invoiceid 中拆分名称。该名称可以有一个 space,也可以有一个连字符。
$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])
$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
)