Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
preg_更换不工作?PHP_Php_Regex_Preg Replace - Fatal编程技术网

preg_更换不工作?PHP

preg_更换不工作?PHP,php,regex,preg-replace,Php,Regex,Preg Replace,为什么除了“location,state”中的逗号外,其他所有逗号都替换为@ $test = preg_replace("#([^ ])([,])([^ ])#","$1@$3","100,,,'test','two',,'location, state',,[],1") 应为:100@@@test'@'two'@'位置,state'@[]@1 实际值:100,"测试","两个","位置,状态",【】1 我认为这是因为模式中的连续逗号是匹配的,如何使其从匹配字符的开头继续包含所有逗号?使用此逗

为什么除了“location,state”中的逗号外,其他所有逗号都替换为@

$test = preg_replace("#([^ ])([,])([^ ])#","$1@$3","100,,,'test','two',,'location, state',,[],1")
应为:100@@@test'@'two'@'位置,state'@[]@1

实际值:100,"测试","两个","位置,状态",【】1

我认为这是因为模式中的连续逗号是匹配的,如何使其从匹配字符的开头继续包含所有逗号?

使用此逗号:

preg_replace('/(?<!\s),(?!\s)/', '@', "100,,,'test','two',,'location, state',,[],1")

preg_replace('/(?字符串中以前已匹配的部分在一次preg_replace运行期间不会再次匹配。因此,第一次替换如下:

10(0)(,)(,),'test'  => 100@,,'test'
                            ^
现在,标记的字符是preg_replace允许匹配的第一个字符->它也不会被替换,因为第一个
([^])
没有匹配的内容

你要找的是


preg_replace(“#”)(?您当前的结果和预期的结果是什么?
preg_replace("#(?<=[^ ])([,])(?=[^ ])#", "@", …)