PHP 在分隔符的第二个实例上爆炸
PHP explode on second instance of a delimiter
我正在尝试使用 PHP 分解一个字符串,但是只有当在分解它之前检测到分隔符的第二个实例时,对于我的情况,我想在第二个 space 之后分解它被检测到。
我的字符串
Apple Green Yellow Four Seven Gray
我的愿望输出
Apple Green
Yellow Four
Seven Gray
我的初始代码
$string = 'Apple Green Yellow Four Seven Gray';
$new = explode(' ',$string);
如何使用爆炸或任何带有 PHP 的分离方法来实现此目的?提前致谢!
您可以为此使用正则表达式。
$founds = array();
$text='Apple Green Yellow Four Seven Gray';
preg_match('/^([^ ]+ +[^ ]+) +(.*)$/', $text, $founds);
也参考以下answer
使用 explode
您无法获得所需的输出。您必须使用 preg_match_all
来查找所有值。
这是一个例子:
$matches = array();
preg_match_all('/([A-Za-z0-9\.]+(?: [A-Za-z0-9\.]+)?)/',
'Apple Green Yellow Four Seven Gray',$matches);
print_r($matches);
如果您有任何问题,请告诉我。
问得好 - 可以通过多种方式完成。我想到了这个 1 -
$data='Apple Green Yellow Blue';
$split = array_map(
function($value) {
return implode(' ', $value);
},
array_chunk(explode(' ', $data), 2)
);
var_dump($split);
你也可以使用这个:
$string = 'Apple Green Yellow Four Seven Gray';
$lastPos = 0;
$flag = 0;
while (($lastPos = strpos($string, " ", $lastPos))!== false) {
if(($flag%2) == 1)
{
$string[$lastPos] = "@";
}
$positions[] = $lastPos;
$lastPos = $lastPos + strlen(" ");
$flag++;
}
$new = explode('@',$string);
print_r($new);
exit;
我正在尝试使用 PHP 分解一个字符串,但是只有当在分解它之前检测到分隔符的第二个实例时,对于我的情况,我想在第二个 space 之后分解它被检测到。
我的字符串
Apple Green Yellow Four Seven Gray
我的愿望输出
Apple Green
Yellow Four
Seven Gray
我的初始代码
$string = 'Apple Green Yellow Four Seven Gray';
$new = explode(' ',$string);
如何使用爆炸或任何带有 PHP 的分离方法来实现此目的?提前致谢!
您可以为此使用正则表达式。
$founds = array();
$text='Apple Green Yellow Four Seven Gray';
preg_match('/^([^ ]+ +[^ ]+) +(.*)$/', $text, $founds);
也参考以下answer
使用 explode
您无法获得所需的输出。您必须使用 preg_match_all
来查找所有值。
这是一个例子:
$matches = array();
preg_match_all('/([A-Za-z0-9\.]+(?: [A-Za-z0-9\.]+)?)/',
'Apple Green Yellow Four Seven Gray',$matches);
print_r($matches);
如果您有任何问题,请告诉我。
问得好 - 可以通过多种方式完成。我想到了这个 1 -
$data='Apple Green Yellow Blue';
$split = array_map(
function($value) {
return implode(' ', $value);
},
array_chunk(explode(' ', $data), 2)
);
var_dump($split);
你也可以使用这个:
$string = 'Apple Green Yellow Four Seven Gray';
$lastPos = 0;
$flag = 0;
while (($lastPos = strpos($string, " ", $lastPos))!== false) {
if(($flag%2) == 1)
{
$string[$lastPos] = "@";
}
$positions[] = $lastPos;
$lastPos = $lastPos + strlen(" ");
$flag++;
}
$new = explode('@',$string);
print_r($new);
exit;