在最后一次出现字符时分解字符串
Explode string on the last occurrence of character
我正在使用 php 7.4
并且我有以下字符串:
Tester Test Street 11 (Nursing Home, Example), 1120 New York
'-------------Split String here
'-----------------------NOT HERE
当我这样做时 explode()
我得到:
$addressAll = explode(", ", "Tester Test Street 11 (Nursing Home, Example), 1120 New York");
/*
array(3) {
[0]=>
string "Tester Test Street 11 (Nursing Home"
[1]=>
string "Example)"
[2]=>
string "1120 New York"
}
*/
不过,我想得到:
array(3) {
[0]=>
string "Tester Test Street 11 (Nursing Home, Example)"
[1]=>
string "1120 New York"
}
关于如何仅拆分最后一次出现的 ,
的任何建议。
感谢您的回复!
使用strrpos()
to find the position of the last comma in the input string and substr()
提取位于最后一个逗号前后的子串:
$input = 'Tester Test Street 11 (Nursing Home, Example), 1120 New York';
$pos = strrpos($input, ',');
$prefix = substr($input, 0, $pos);
$suffix = substr($input, $pos + 1);
看到了in action.
preg_split() 的解决方案。
字符串由单个逗号分隔,仅后跟不带逗号的字符,直至字符串末尾。
$input = 'Tester Test Street 11 (Nursing Home, Example), 1120 New York';
$array = preg_split('~,(?=[^,]+$)~',$input);
?= 导致括号中的表达式不用作反向引用。
我正在使用 php 7.4
并且我有以下字符串:
Tester Test Street 11 (Nursing Home, Example), 1120 New York
'-------------Split String here
'-----------------------NOT HERE
当我这样做时 explode()
我得到:
$addressAll = explode(", ", "Tester Test Street 11 (Nursing Home, Example), 1120 New York");
/*
array(3) {
[0]=>
string "Tester Test Street 11 (Nursing Home"
[1]=>
string "Example)"
[2]=>
string "1120 New York"
}
*/
不过,我想得到:
array(3) {
[0]=>
string "Tester Test Street 11 (Nursing Home, Example)"
[1]=>
string "1120 New York"
}
关于如何仅拆分最后一次出现的 ,
的任何建议。
感谢您的回复!
使用strrpos()
to find the position of the last comma in the input string and substr()
提取位于最后一个逗号前后的子串:
$input = 'Tester Test Street 11 (Nursing Home, Example), 1120 New York';
$pos = strrpos($input, ',');
$prefix = substr($input, 0, $pos);
$suffix = substr($input, $pos + 1);
看到了in action.
preg_split() 的解决方案。 字符串由单个逗号分隔,仅后跟不带逗号的字符,直至字符串末尾。
$input = 'Tester Test Street 11 (Nursing Home, Example), 1120 New York';
$array = preg_split('~,(?=[^,]+$)~',$input);
?= 导致括号中的表达式不用作反向引用。