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();
}