定義和用法
str_replace() 函數使用一個字符串替換字符串中的另一些字符。
語法
str_replace(find,replace,string,count)
參數 描述
find 必需。規定要查找的值。
replace 必需。規定替換 find 中的值的值。
string 必需。規定被搜索的字符串。
count 可選。一個變量,對替換數進行計數。
提示和注釋
注釋:該函數對大小寫敏感。請使用 str_ireplace() 執行對大小寫不敏感的搜索。
注釋:該函數是二進制安全的。
例子 1
?php echo str_replace( world , John , Hello world! ?
輸出:
Hello John!
例子 2
在本例中,我們將演示帶有數組和 count 變量的 str_replace() 函數:
?php $arr = array( blue , red , green , yellow print_r(str_replace( red , pink ,$arr,$i)); echo Replacements: $i ?
輸出:
Array [0] = blue [1] = pink [2] = green [3] = yellow Replacements: 1
例子 3
?php $find = array( Hello , world $replace = array( B $arr = array( Hello , world , ! print_r(str_replace($find,$replace,$arr)); ?
輸出:
Array [0] = B [1] = [2] = ! )
漏洞相關函數:
?php $arr1 = Array( http://img.jb51.net/img/offer/29/24/70/20/29247020 , http://img.jb51.net/img/offer/29/24/70/20/29247020-1 , http://img.jb51.net/img/offer/29/24/70/20/29247020-2 $arr2 = Array( http://localhost/root/ups/af48056fc4.jpg , http://localhost/root/ups/cf33240aa3.jpg , http://localhost/root/ups/c30e40419b.jpg $data = img src= http://img.jb51.net/img/offer/29/24/70/20/29247020 / img src= http://img.jb51.net/img/offer/29/24/70/20/29247020-1 / img src= http://img.jb51.net/img/offer/29/24/70/20/29247020-2 / $data = str_replace($arr1,$arr2,$data); var_dump($data); ?
替換后的結果是:
string(169) img src= http://localhost/root/ups/af48056fc4.jpg / img src= http://localhost/root/ups/af48056fc4.jpg-1 / img src= http://localhost/root/ups/af48056fc4.jpg-2 / str_replace 函數的聲明大概是這樣: str_replace($search, $replace, $input[, $count]), 比如在對一個字符串進行替換操作, $input 就是源字符串(稱為數據源). 這很不合理,因為它把數據源放在第3位, 而 str_pos, strtok, str_repeat 等等函數都是把數據源放在第1位.也就是說str_replace并沒有替換掉數組中相對應的字符串,而是把數組中的第一個替換,然后把相同的字符串后多余的合并。
解決辦法:
function strrplace($arr1,$arr2,$data){ if(is_array($arr1)) { foreach($arr1 as $key = $html' target='_blank'>value) { $data = str_replace_once($value, $arr2[$key], $data); } } return $data;function str_replace_once($needle, $replace, $data) //替換第一次$pos = strpos($data, $needle);if ($pos === false) {return $data; return substr_replace($data, $replace, $pos, strlen($needle));}
以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP !
相關推薦:
PHP中filter_var() 函數和Filter 函數的分析
關于PHP截取字符串的一些方法總結
以上就是關于php中str_replace替換漏洞的分析的詳細內容,PHP教程
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答