簡體   English   中英

的PHP:防止escapeshellcmd()刪除特殊字符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM