Php 附加到每个正则表达式结果
假设我们有一个类似“CS x1CD x2CE x3”的文本 我想做的是用x1\n替换每个x1,用x2\n替换x2,用x3\n替换x3,等等。在运行期间,这些值将是什么,目前还不知道,但基本上在每个x[0-9]+之后,我们希望添加一个换行符 我该怎么做?我试着使用正则表达式,比如Php 附加到每个正则表达式结果,php,regex,Php,Regex,假设我们有一个类似“CS x1CD x2CE x3”的文本 我想做的是用x1\n替换每个x1,用x2\n替换x2,用x3\n替换x3,等等。在运行期间,这些值将是什么,目前还不知道,但基本上在每个x[0-9]+之后,我们希望添加一个换行符 我该怎么做?我试着使用正则表达式,比如 preg_replace("/x[0-9]+/", "${1}\n", $request['item_name']); 但这不起作用,因为它只使用第一个结果 试试这个: preg_replace("/(x[0-9]
preg_replace("/x[0-9]+/", "${1}\n", $request['item_name']);
但这不起作用,因为它只使用第一个结果
试试这个:
preg_replace("/(x[0-9]+)/","${0}\n",$request['item_name']);
<?php
$string = $request['item_name'];
$string = preg_replace('/(x\d+)/', '$1\n', $string);
echo $string;
?>
您正在寻找以下内容
preg_replace('/x[0-9]+/', '${0}' . "\n", $request['item_name']);
请参阅。尝试以下操作:
preg_replace("/(x[0-9]+)/","${0}\n",$request['item_name']);
<?php
$string = $request['item_name'];
$string = preg_replace('/(x\d+)/', '$1\n', $string);
echo $string;
?>
演示
您可以避免使用
\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']);
使用
0
而不是1
:“${0}”。“\n”
:p大括号正则表达式语法只能在单引号内使用。如果使用单引号,\n
将被解释为文字\n
(而不是换行符)。解决办法是使用@HamZa所说的内容。请参阅。最好改用${1}
,因为preg_replace()
有一个不明确的地方。@AmalMurali:这里没有歧义。@CasimiritHippolyte:目前没有,没有。但有可能。安全总比遗憾好;-)伙计,那是克莱弗+你赢了我我同意。