从 php 中用 sed 替换 "/\ 字符

Replacing "/\ characters with sed, from within php

我使用 shell_exec / dd/ /dev/urandom 从 php(通过网页)生成密码。 我要消除
"/\ 我生成的密码中的字符。

如果我用

在我的 sed 行中进行替换

's/["/\]/!/g'

脚本执行失败。但是我从命令行测试了这个

echo "this /is \"a \test" | sed -e 's/["/\]/!/g'

然后我得到了正确的结果:this !is !a !test

如果我从我的 sed 行中删除这个替换部分,php 脚本会正确执行。似乎是什么问题?我认为方括号 [] 中的字符是安全的,不需要转义。这是问题所在吗?

在PHP中,如果你在双引号字符串文字中使用命令,你需要用一个反斜杠转义"\",反斜杠在括号表达式也必须转义。

最后,这一定是这样的

sed 's/[\"/\]/!/g'