我使用str_replace()
用'%'替换字符串中的所有斜杠,然后通过函数运行新编辑的字符串。这个函数所做的一件事就是在字符串中添加'%%%'。
现在,我需要仅替换之前替换的百分号,即之前的斜杠,再次使用斜杠。
因此,如果原始字符串如下所示:'the/wuick/bornw/foc/jumps/over/the/lazy/dog.
'
在通过函数后,它将如下所示:'The%quick%brown%fox%jumps%over%the/lazy%dog.%%%
'
然后在通过我需要帮助的部分之后,它将如下所示:'The/quick/brown/fox/jumps/over/the/lazy/dog.%%%
'
我非常感谢任何和所有帮助,只替换我之前用str_replace()
做过的%。
答案 0 :(得分:4)
要用斜杠替换单个%
符号,可以使用
$result = preg_replace('/(?<!%)%(?!%)/', '/', $subject);
这会使用negative lookaround assertions来确保只有那些%
个符号匹配,这些符号既不会先于另一个%
符号,也不会跟在其后面。
在regex101.com上查看。
答案 1 :(得分:0)
没有太多并发症按此顺序执行:
$str = 'The%quick%brown%fox%jumps%over%the/lazy%dog.%%%';
$str= str_replace('%%%','***triple_percent**', $str);
$str= str_replace('%','/', $str);
$str= str_replace('***triple_percent**','%%%', $str);
理想的是首先要了解为什么你有这么多%,我相信你可以简化你的功能。
另一种解决方案是使用像Tim在他的回答中所说的正则表达式
$str= preg_replace('/(?<!%)%(?!%)/', '/', $str);
分手意味着:
(?<!%) Not % before
% find %
(?!%) Not % after
还添加g以便它可以多次找到它,并且在您可能需要的情况下我会区分大小写:
$str= preg_replace('/(?<!%)%(?!%)/ig', '/', $str);
答案 2 :(得分:-1)
使用空白字符串添加另一个重播,例如:
$string = str_replace('%', '', $string);