php:阻止escapeshellcmd()删除特殊字符

时间:2016-07-30 08:05:03

标签: php special-characters

我想将特殊字符传递给shell命令,但是escapeshellcmd()并不允许我这样做。 如何掩盖它们以便它们通过?

示例:

<?php
$specialchars='I would like to print a µ';
$escaped_specialchar=escapeshellcmd($specialchars);
echo $escaped_specialchar; 
?>

1 个答案:

答案 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);
}