将 “/\ 字符替换为 sed,从 php 中

Replacing "/\ characters with sed, from within php

提问人:user152400 提问时间:11/24/2021 最后编辑:user152400 更新时间:11/24/2021 访问量:60

问:

我使用 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

评论

0赞 Cyrus 11/24/2021
在您的问题中添加如何生成密码(无评论)。
0赞 Cyrus 11/24/2021
我建议首先生成不包含不需要的字符的密码。
0赞 Sammitch 11/24/2021
向我们展示生成密码的代码。xyproblem.info
0赞 Wiktor Stribiżew 11/24/2021
正确转义字符,sed 's/[\"/\\]/!/g'
0赞 user152400 11/24/2021
奥斯卡奖颁给了 Wiktok Stribizew

答:

0赞 Wiktor Stribiżew 11/24/2021 #1

在 PHP 中,如果在双引号字符串文本中使用命令,则需要使用单个反斜杠转义 ,并且还必须转义括号表达式中的反斜杠。"\"

最后,这必须看起来像

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

评论

0赞 user152400 11/25/2021
是的,我应该提供密码生成行,但是是的,我使用的是双引号 shell_exec(“dd if=/dev/urandom .....|基数64 |sed ' ......'")