0

我有这样的字符串:

123 qwerty 6 foo bar 55 bar

我需要让它像这样

123 qwerty
6 foo bar
55 bar

怎么做?

UPD: 我试过了

$subject = "123 qwerty 6 foo 55 bar";
$pattern = '/[^0-9]/';
preg_match($pattern, substr($subject,3), $matches, PREG_OFFSET_CAPTURE);
echo "<pre>";
print_r($matches);

但这对我不起作用。

4

3 回答 3

3

你可以使用这个:

$text = '123 qwerty 6 foo 55 bar baz';
$result = preg_replace('/([0-9]+[^0-9]+)/i', '$1\n', $text);

这会查找至少一个数字后跟至少一个不是数字的字符并添加换行符。

阅读更多

于 2013-01-17T14:25:49.850 回答
2

像这样:

 $lineending= "\n";
 $parts= explode(' ',$string);
 $result= "";
 for($i=0; $i<count($parts);){
    $result .= $parts[$i];
    while(!is_numeric($parts[$i]) && $i<count($parts)){
        $result .= $parts[$i];
        $i+= 1;
    }
    $result .= $lineending; 
 }

;-)

于 2013-01-17T14:06:03.463 回答
0

试试这个:

$subject = '123 qwerty 6 foo 55 bar';
$pattern = '/ (?=[\d]+)/';
$replacement = "\n";

$result = preg_replace( $pattern, $replacement, $subject );

print_r( $result );

产生:

123 qwerty
6 foo
55 bar

PHP 演示:http ://codepad.org/MNLgaySd


关键在于正则表达式的“正向前瞻”,(?=...)

正则表达式演示:http ://rubular.com/r/i4CdoEL9f4

于 2013-01-17T14:31:47.687 回答