php使用escapeshellarg時(shí)中文被過(guò)濾的解決方法
本文分析了php使用escapeshellarg時(shí)中文被過(guò)濾的解決方法。分享給大家供大家參考。具體如下:
一、問(wèn)題:
同樣的代碼,發(fā)現(xiàn)通過(guò) localhost/index.php 訪問(wèn),和在 shell 中通過(guò) php ./index.php 運(yùn)行結(jié)果卻不一樣。
在程序中需要通過(guò) shell_exec 來(lái)執(zhí)行一個(gè) linux 程序,而它的輸入來(lái)自 echo ,即:
shell_exec('echo '.escapeshellarg($str).' | some_cmd 2>&1');
二、解決方法:
而這個(gè) $str 中可能包含中文的。一開(kāi)始我還以為是 some_cmd 自己把中文濾掉,后來(lái)發(fā)現(xiàn)是 escapeshellarg 的問(wèn)題。
貌似出現(xiàn)這個(gè)問(wèn)題的不多,經(jīng)過(guò)查詢與測(cè)試發(fā)現(xiàn)原來(lái)是 shell 和 apache php-cgi 的運(yùn)行環(huán)境不同引起的。
在 php 中加入:
setlocale(LC_CTYPE, "UTF8", "en_US.UTF-8");
就正常了!
希望本文所述對(duì)大家php程序設(shè)計(jì)有所幫助。
- php實(shí)現(xiàn)過(guò)濾字符串中的中文和數(shù)字實(shí)例
- PHP實(shí)現(xiàn)過(guò)濾掉非漢字字符只保留中文字符
- php 過(guò)濾英文標(biāo)點(diǎn)符號(hào)及過(guò)濾中文標(biāo)點(diǎn)符號(hào)代碼
- php完全過(guò)濾HTML,JS,CSS等標(biāo)簽
- PHP字符過(guò)濾函數(shù)去除字符串最后一個(gè)逗號(hào)(rtrim)
- php正則過(guò)濾html標(biāo)簽、空格、換行符的代碼(附說(shuō)明)
- PHP開(kāi)發(fā)不能違背的安全規(guī)則 過(guò)濾用戶輸入
- php過(guò)濾HTML標(biāo)簽、屬性等正則表達(dá)式匯總
- php 安全過(guò)濾函數(shù)代碼
- 幾個(gè)有用的php字符串過(guò)濾,轉(zhuǎn)換函數(shù)代碼
- 比較好用的PHP防注入漏洞過(guò)濾函數(shù)代碼
- PHP屏蔽過(guò)濾指定關(guān)鍵字的方法
相關(guān)文章
PHP中 empty() 和 isset() 的區(qū)別介紹
作為PHP中經(jīng)常用來(lái)判斷變量是否為空的函數(shù):empty()和isset() ,二者其實(shí)在很多方面還是存在區(qū)別的,本文將為大家詳細(xì)介紹一下他們的區(qū)別之處,需要的朋友可以了解一下2021-12-12php獲取服務(wù)器端mac和客戶端mac的地址支持WIN/LINUX
這篇文章主要介紹了php獲取服務(wù)器端mac和客戶端mac地址的方法,需要的朋友可以參考下2014-05-05PHP pthreads v3在centos7平臺(tái)下的安裝與配置操作方法
這篇文章主要介紹了PHP pthreads v3在centos7平臺(tái)下的安裝與配置操作方法,結(jié)合圖文與實(shí)例形式分析了PHP pthreads v3在centos7平臺(tái)下的安裝與配置操作具體步驟、相關(guān)命令與注意事項(xiàng),需要的朋友可以參考下2020-02-02PHP常見(jiàn)的6個(gè)錯(cuò)誤提示及解決方法
自學(xué)黨們?cè)谧詫W(xué)php的時(shí)候,經(jīng)常會(huì)發(fā)生一些小錯(cuò)誤,這篇文章主要介紹了PHP常見(jiàn)的6個(gè)錯(cuò)誤提示及解決方法,感興趣的小伙伴們可以參考一下2016-07-07PHP郵件發(fā)送類PHPMailer用法實(shí)例詳解
這篇文章主要介紹了PHP郵件發(fā)送類PHPMailer用法,詳細(xì)的講述了安裝及配置的方法與功能實(shí)現(xiàn)代碼,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-09-09Session保存到數(shù)據(jù)庫(kù)的php類分享
Session保存到數(shù)據(jù)庫(kù)的php類,需要的朋友可以參考下。2011-10-10php ob_flush,flush在ie中緩沖無(wú)效的解決方法
一些版本的 Microsoft Internet Explorer 只有當(dāng)接受到的256個(gè)字節(jié)以后才開(kāi)始顯示該頁(yè)面,所以必須發(fā)送一些額外的空格來(lái)讓這些瀏覽器顯示頁(yè)面內(nèi)容。2010-05-05深入理解PHP中的static和yield關(guān)鍵字
這篇文章主要給大家介紹了關(guān)于PHP中static和yield關(guān)鍵字的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用php具有一定的參考學(xué)習(xí)價(jià)值,文章需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-09-09