Php 如何替换此字符串中的斜杠?

Php 如何替换此字符串中的斜杠?,php,regex,preg-replace,str-replace,Php,Regex,Preg Replace,Str Replace,我有一个字符串,比如: images/Qcuj/lXOSWNDwF/FmSgCbQ==.jpg 我想在图像/之后将/替换为- 希望结果如下: images/Qcuj lXOSWNDwF FmSgCbQ==.jpg 这似乎很简单,但我不知道,谢谢你的帮助 该字符串可能位于html文件中,可能类似于: 如何正确匹配和替换 谢谢大家!!我会理解答案的 顺便说一下,我使用php。您可以使用: $s = 'images/Qcuj/lXOSWNDwF/FmSgCbQ==.jpg'; echo preg_

我有一个字符串,比如:
images/Qcuj/lXOSWNDwF/FmSgCbQ==.jpg

我想在
图像/
之后将
/
替换为
-

希望结果如下:

images/Qcuj lXOSWNDwF FmSgCbQ==.jpg

这似乎很简单,但我不知道,谢谢你的帮助



该字符串可能位于html文件中,可能类似于:

如何正确匹配和替换

谢谢大家!!我会理解答案的

顺便说一下,我使用php。

您可以使用:

$s = 'images/Qcuj/lXOSWNDwF/FmSgCbQ==.jpg';
echo preg_replace('~(images/)(*SKIP)(*F)|([^/]*)/~', '$1$2-', $s);
images/Qcuj-lXOSWNDwF-FmSgCbQ==.jpg
$s = '<td><img src="images/Qcuj/lXOSWNDwF/FmSgCbQ==.jpg" ></td>';
echo preg_replace('~(images/|</)(*SKIP)(*F)|([^/<"]*)/~', '$1$2-', $s);
<td><img src="images/Qcuj-lXOSWNDwF-FmSgCbQ==.jpg" ></td>

说明:

images/Qcuj-lXOSWNDwF-FmSgCbQ==.jpg
  • (*FAIL)
    的行为类似于失败的否定断言,是
    (?!)
  • (*SKIP)
    定义了一个点,在该点之后子模式失败时,不允许正则表达式引擎回溯该点
  • (*SKIP)(*FAIL)
    一起提供了一个很好的限制替代方案,您不能在上述正则表达式中使用可变长度查找
  • 在这个正则表达式中,我们匹配
    image/
    并跳过+使匹配失败。在其余的输入中,我们匹配
    /
    ,并替换为
    -

更新:对于更新的正则表达式,您可以使用:

$s = 'images/Qcuj/lXOSWNDwF/FmSgCbQ==.jpg';
echo preg_replace('~(images/)(*SKIP)(*F)|([^/]*)/~', '$1$2-', $s);
images/Qcuj-lXOSWNDwF-FmSgCbQ==.jpg
$s = '<td><img src="images/Qcuj/lXOSWNDwF/FmSgCbQ==.jpg" ></td>';
echo preg_replace('~(images/|</)(*SKIP)(*F)|([^/<"]*)/~', '$1$2-', $s);
<td><img src="images/Qcuj-lXOSWNDwF-FmSgCbQ==.jpg" ></td>
$s='';
回波预处理替换(“~(图像/|
在这里,我们将字符串拆分为path和rest,转换rest中的斜杠,并用斜杠将片段粘回。无论是否可以避免使用regexp,都要避免使用它。

使用锚点进行连续模式匹配

锚点\G在上次匹配结束的位置匹配

(?:images/|(?<!^)\G)[^\n/]*\K/
输出:

images/Qcuj-lXOSWNDwF-FmSgCbQ==.jpg

不要在跳圈的同时捏着鼻子让正则表达式工作,只需先拆分字符串,然后只在第二部分应用替换:

$s = 'images/Qcuj/lXOSWNDwF/FmSgCbQ==.jpg';
list($prefix, $suffix) = explode('/', $s, 2);

$t = $prefix . '/' . strtr($suffix, '/', '-');

您尝试过什么或做过一些研究吗?字符串在HTML文件中,因此可能有很多标记围绕着它,而不仅仅是匹配给定的字符串。如何问一个好问题:谢谢提醒,我会阅读帮助哦,我明白了,第一个版本不是:)字符串可能在html文件中,可能会像:
,这如何匹配?非常感谢!这很有效!^我没有足够的声誉投票给你,很抱歉字符串可能在html文件中,可能会像:
,这如何匹配和正确替换?使用正则表达式修改html是危险和容易出错的。最好提取
src
使用DOM部分,然后应用这个正则表达式。如果您没有选择使用DOM,那么非常感谢您的案例!!正则表达式太难了,我还有很长的路要走