使用php在字符串中的数字字符前放置一个换行符

时间:2013-01-17 14:00:46

标签: php

我有这样的字符串:

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);

但这对我不起作用。

3 个答案:

答案 0 :(得分:3)

你可以用这个:

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

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

阅读更多abot:

答案 1 :(得分: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; 
 }

- )

答案 2 :(得分: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


密钥位于正则表达式的“positive lookahead”,(?=...)

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