1

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()

4

3 回答 3

4

要用斜杠替换单个%符号,您可以使用

$result = preg_replace('/(?<!%)%(?!%)/', '/', $subject);

这使用否定环视断言来确保仅%匹配那些既不在另一个符号之前也不在其后的%符号。

regex101.com上查看。

于 2013-06-14T21:46:28.260 回答
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 以便它可以多次找到它,并且 i 在您可能需要它的情况下区分大小写:

$str= preg_replace('/(?<!%)%(?!%)/ig', '/', $str);
于 2013-06-14T21:47:21.527 回答
-1

添加另一个带有空白字符串的 replate,例如:

$string = str_replace('%', '', $string);
于 2013-06-14T21:47:51.810 回答