2016-07-30 68 views
0

我想將特殊字符傳遞給shell命令,但escapeshellcmd()不允許我。 我如何掩蓋他們,讓他們通過?php:防止escapeshellcmd()移除特殊字符

例子:

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

回答

1

你可以先創建一個白名單,從中可以定義特殊字符,這是OK顯示。還要設置一些字符串,用來替換字符。

然後用字符串替換命令中的字符。逃脫你的命令。

通過替換字符串來再次切換特殊字符。

像這樣:

$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); 
} 
+0

輝煌,謝謝 – Heliosh