附加到每个正则表达式结果

时间:2014-05-04 20:21:17

标签: php regex

所以我们假设我们有一个像“CS x1CD x2CE x3”

这样的文字

我想要做的是将每个x1替换为x1 \ n,x2替换为x2 \ n,x3替换为x3 \ n等。在运行期间,之前不知道这些值是什么,但基本上在每个x之后[0-9] +我们想追加换行符。

我该怎么做?我尝试使用正则表达式,如

preg_replace("/x[0-9]+/", "${1}\n", $request['item_name']);

但这不起作用,因为它只使用第一个结果。

4 个答案:

答案 0 :(得分:2)

您可以避免使用\K来引用捕获组:

$result = preg_replace("/x[0-9]+\K/", "\n", $request['item_name']);

\K从匹配结果中删除左侧的所有内容。

如果您的服务器在linux / unix系统上运行,您可以使用PHP_EOL跳过大部分卷曲/双/单引号/换行问题:

$result = preg_replace("/x[0-9]+/", '$0' . PHP_EOL, $request['item_name']);

答案 1 :(得分:1)

您正在寻找以下内容。

preg_replace('/x[0-9]+/', '${0}' . "\n", $request['item_name']);

请参阅live demo

答案 2 :(得分:0)

Working Live Demo

试试这个:

 preg_replace("/(x[0-9]+)/","${0}\n",$request['item_name']);

答案 3 :(得分:0)

试试这个:

<?php
$string  = $request['item_name'];
$string  = preg_replace('/(x\d+)/', '$1\n', $string);
echo $string;
?>

<强> 样本

http://ideone.com/quh4M1