php自帶字元過濾
A. PHP提交自動過濾掉input框內的指定字元,怎麼寫呢
tr_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] => !
)
B. php過濾字元問題
用js過濾非法字元是不安全的,js是客戶端技術,可以本地繞過
如果數據是入庫的,最好在伺服器端在過濾一次,防止惡意字元進入資料庫,形成注入,可以這樣過濾
<?php
if (isset($_GET['price'])){
(is_numeric($_GET['price']) and is_int($_GET['price']+0))?$price=$_GET['price']:die('非int類型,請重新輸入');
echo "價格為 $price";
}
?>
<form action="">
<input type="text" name="price">
<input type="submit" value="send">
</form>
不過int型範圍是2147483647,超出後即使是整數,也被解釋為float
C. php過濾指定字元的函數
explode — 使用一個字元串分割另一個字元串
array explode ( string $delimiter , string $string [, int $limit ] )
此函數返回由字元串組成的數組,每個元素專都是 string 的一個屬子串,它們被字元串 delimiter 作為邊界點分割出來。
<?php
//示例1
$pizza="";
$pieces=explode("",$pizza);
echo$pieces[0];//piece1
echo$pieces[1];//piece2
//示例2
$data="foo:*:1023:1000::/home/foo:/bin/sh";
list($user,$pass,$uid,$gid,$gecos,$home,$shell)=explode(":",$data);
echo$user;//foo
echo$pass;//*
?>
D. php過濾字元串
用正則表達式替換。
因為你沒有詳細說明,所以我無法給你演示,找一本正則表內達式手冊,如果容你熟悉php,應該很容易看懂,在php裡面有正則表達式的相關函數,比如替換/匹配都很方便。
以下是幾個例子:
正則表達式說明
/\b([a-z]+) \1\b/gi一個單詞連續出現的位置
/(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/將一個URL解析為協議、域、埠及相對路徑
/^(?:Chapter|Section) [1-9][0-9]{0,1}$/定位章節的位置
/[-a-z]/A至z共26個字母再加一個-號。
/ter\b/可匹配chapter,而不能terminal
/\Bapt/可匹配chapter,而不能aptitude
/Windows(?=95 |98 |NT )/可匹配Windows95或Windows98或WindowsNT,當找到一個匹配後,從Windows後面開始進行下一次的檢索匹配。
E. PHP 如何過濾特殊字元 如 ◆ )- : 、 、!! / 等
^PHP 中的 preg_replace() 函數可以實現
實例:只匹配中文
<?php
$str="php)!內!編程";
echopreg_replace("/[^容x{4e00}-x{9fa5}]/iu",'',$str);
?>
F. php怎麼提取和過濾一段字元串裡面的內容
這些東西怎麼看起來想javascript乾的事情。當然php也可以干,對於php而言,所有的html代碼都一樣只是文本而已內,所以可以用容replace等函數替換就行。對於javascript而言這個是dom處理起來就靈活的多。
G. php 有什麼辦法可以過濾字元
<?php
$str='20130626113956421.jpg';
$pic =substr($str,0,14).''. substr($str,17);
echo $pic;
?>
H. 整理了php過濾字元串幾個例子
用正則表達式替換。
因為你沒有詳細說明,所以我無法給你演示,找一本正則表達回式手冊答,如果你熟悉php,應該很容易看懂,在php裡面有正則表達式的相關函數,比如替換/匹配都很方便。
以下是幾個例子:
正則表達式說明
/\b([a-z]+) \1\b/gi一個單詞連續出現的位置
/(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/將一個URL解析為協議、域、埠及相對路徑
/^(?:Chapter|Section) [1-9][0-9]{0,1}$/定位章節的位置
/[-a-z]/A至z共26個字母再加一個-號。
/ter\b/可匹配chapter,而不能terminal
/\Bapt/可匹配chapter,而不能aptitude
/Windows(?=95 |98 |NT )/可匹配Windows95或Windows98或WindowsNT,當找到一個匹配後,從Windows後面開始進行下一次的檢索匹配。
I. PHP字元串過濾
可以用正則實現。給定字元串的規律是3冒號1分號中,前兩個冒號之前是數字,需要回的是第三個冒號與答分號之前的部分。可如下處理:
<?php
$string = "6939376:28407:包裝方式:包裝;5392114:75367881:重量(g):500;20000:7343430:品牌:蒙園;";
preg_match_all("/[^:\d]+:[^;]+;/", $string, $out);
$rst = implode("", $out[0]);
echo $rst;
?>
$rst為"包裝方式:包裝;重量(g):500;品牌:蒙園;"。已經測試是可行的(php5),如有問題歡迎繼續交流
J. PHP如何過濾★等特殊符號
|我的程序是抄這樣編寫的,相信你一看就懂:
if(preg_match("/[ '.,:;*?~`!@#$%^&+=)(<>{}]|\]|\[|\/|\\\|\"|\|/",$user)){
echo '不要在名字裡面整些特殊符號,請只使用字母、數字和漢字,當然要你的瀏覽器要選簡體中文GB2312喲,千萬不要選繁體、中文HZ等。返回修改後,再來,我等你喲!';
exit();
}