[英]php: prevent escapeshellcmd() from removing special characters
我想將特殊字符傳遞給shell命令,但是escapeshellcmd()不允許我這樣做。 我該如何遮蓋它們以使它們通過?
例:
<?php
$specialchars='I would like to print a µ';
$escaped_specialchar=escapeshellcmd($specialchars);
echo $escaped_specialchar;
?>
您可以首先創建一個白名單,在其中定義可以顯示的特殊字符。 還要設置一些可以用來替換字符的字符串。
然后用字符串替換命令中的字符。 轉義您的命令。
通過替換字符串再次切換特殊字符。
像這樣:
$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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.