我想将特殊字符传递给shell命令,但是escapeshellcmd()并不允许我这样做。 如何掩盖它们以便它们通过?
示例:
<?php
$specialchars='I would like to print a µ';
$escaped_specialchar=escapeshellcmd($specialchars);
echo $escaped_specialchar;
?>
答案 0 :(得分:1)
您可以先创建一个白名单,在其中定义可以显示的特殊字符。还要设置一些字符串,您可以用它来替换字符。
然后用字符串替换命令中的字符。逃避你的命令。
通过替换字符串再次切换特殊字符。
像这样:
$allowedCharakters = array(
'µ' => 'microUThingie',
);
$specialchars='I would like to print a µ';
foreach ($allowedCharakters as $key => $value) {
$specialchars = str_replace($key, $value, $specialchars);
}
$escaped_specialchar=escapeshellcmd($specialchars);
foreach ($allowedCharakters as $key => $value) {
$escaped_specialchar = str_replace($value, $key, $specialchars);
}