Php 我应该在preg_replace()中使用什么正则表达式来查找所有带引号字符串中的制表符并替换为单个空格?

Php 我应该在preg_replace()中使用什么正则表达式来查找所有带引号字符串中的制表符并替换为单个空格?,php,regex,preg-replace,Php,Regex,Preg Replace,我知道需要做什么,但是使用正确的正则表达式失败了 我应该在preg_replace()中使用什么正则表达式来查找所有带引号字符串中的制表符并替换为单个空格 任何帮助都将不胜感激 例如: $string = '"Foo\tMan\tChoo"' preg_replace($expression_string, ' ',$string); echo $string;//desired result---->'"Foo Man Choo"' 我认为这个问题不是重复的 回答:您需要在一个字段

我知道需要做什么,但是使用正确的正则表达式失败了

我应该在preg_replace()中使用什么正则表达式来查找所有带引号字符串中的制表符并替换为单个空格

任何帮助都将不胜感激

例如:

$string = '"Foo\tMan\tChoo"'

preg_replace($expression_string, ' ',$string);

echo $string;//desired result---->'"Foo Man Choo"'
我认为这个问题不是重复的

回答:您需要在一个字段中重复最多\t次preg\u replace(永远不会为提交更通用的解决方案而烦恼:通常可以使用此解决方案)

还要确保每一行都以制表符结尾(否则最后一个字段将不会被处理)

然后需要从最大可能数量的\t开始重复替换(示例中为2)


为什么要将正则表达式用于
str\u replace
可以做的事情<代码>stru替换(CHR(9),CHR(32),$string)因为我使用的是制表符分隔的文件,如果我直接进行str_替换,分隔符将消失。我不确定我是否遵循了这一点。这些函数以相同的方式工作。一个是本机字符串函数,另一个是pcre。回到那天,由于ereg的表现不太好,所以更为相关,但是我觉得你还是应该使用正确的工具来完成这项工作。@ficuscr我不认为这个问题与前面提到的问题重复,因为这里的问题是进行上下文相关的替换:只\t应该替换引用字段内的字段-请参阅编辑以获取我想提交的答案。我想我以前在评论时没有看到问题的这一方面。建议的“替换PHP中引用的所有字符”是否没有回答这个问题?为什么要将regex用于
str\u Replace
可以做的事情<代码>stru替换(CHR(9),CHR(32),$string)因为我使用的是制表符分隔的文件,如果我直接进行str_替换,分隔符将消失。我不确定我是否遵循了这一点。这些函数以相同的方式工作。一个是本机字符串函数,另一个是pcre。回到那天,由于ereg的表现不太好,所以更为相关,但是我觉得你还是应该使用正确的工具来完成这项工作。@ficuscr我不认为这个问题与前面提到的问题重复,因为这里的问题是进行上下文相关的替换:只\t应该替换引用字段内的字段-请参阅编辑以获取我想提交的答案。我想我以前在评论时没有看到问题的这一方面。建议的“替换PHP中引用的所有字符”是否没有回答这个问题?
$string = '"Foo'."\t".'Man'."\t".'Choo"'."\t".'boo'."\t".'"Foo'."\t".'Man"'."\t";

$string = preg_replace('/"([^"]*)'."\t".'([^"]*)'."\t".'([^"]*)"'."\t".'/','"$1_$2_$3"'."\t",$string);
$string = preg_replace('/"([^"]*)'."\t".'([^"]*)"'."\t".'/','"$1_$2"'."\t",$string);

echo $string;