$filename=$file['name'];if (!preg_match('/\\.(gif|jpeg|png|bmp|doc|)$/i', $filename)) { echo "文件类型不合法!"; } else { }解释一下preg_match('/\\.(gif|jpeg|png|bmp|doc|)$/i', $filename是什么意思?另外,preg_match()和preg_match all()函数的区别。另外为何我把语句改成:$allowtype="gif|jpeg|png|bmp|doc|";$filename=$file['name'];if (!preg_match('/\\.($allowtype)$/i', $filename)) { echo "文件类型不合法,只能上传".$allowtype."文件"; } else { }就报错?怎么改才正确?
preg_match()函数用于正则表达式知识匹配,如果成功则返回1,否则返回0。
Preg_match()在成功匹配之后停止匹配,如果要实现所有结果的内部匹配,则使用preg_match_all()函数。
php函数取得字符串长度:
1.首先,创建一个新的PHP文件并将其命名为test.php。
2.在test.php文件中,定义两个字符串,一个是纯英文字符串,另一个是中英文混合字符串。
3.使用strlen()方法来计算长度,从程序执行结果来看,strlen()方法计算的字符串长度$Str1是正确的,第二个字符串$Str2是错误的。
4.创建一个新的utf8_strlen()函数,并将其参数定义为$string,默认为null。
5.在utf8_strlen()函数中,使用preg_match_all()方法通过正则表达式分割字符串,并将其保存在$match变量中。最后,计算从count()方法获得的数组元素的数量,并返回结果。
6.使用utf8_strlen()分别计算$Str1和$Str2字符串的长度,并使用echo将结果输出到页面。
7.在浏览器中运行test.php文件并查看程序执行的结果。从这两个结果可以看出,统计字符串长度已经成功实现。
preg_match() 函数用于进行正则表达式匹配,成功返回 1 ,否则返回 0 。
preg_match() 匹配成功一次后就会停止匹配,如果要实现全部结果的匹配,则需使用preg_match_all() 函数。
例子:
<?php// 模式定界符后面的 "i" 表示不区分大小写字母的搜索
if (preg_match ("/hi/i", "Welcome to hi-docs.com.")) {
echo "A match was found.";
} else {
echo "A match was not found.";
}
?>
// 输出 A match was found.
2 preg_match只要匹配到一个符合条件的就结束查找,而preg_match_all要将字符串从头检查到尾,不论是否找到匹配字符。
3 if (!preg_match('/\\.($allowtype)$/i', $filename)) 这句话有错,'引号中的$allowtype是不能引用变量值的,只当作字符串,因此应该这样:if (!preg_match('/\\.('.$allowtype.')$/i', $filename))本回答被提问者和网友采纳
preg_match()和preg_match all()函数的区别:一个匹配到内容就结束,一个匹配全部符合条件的;
怎么改?把if (!preg_match('/\\.(gif|jpeg|png|bmp|doc|)$/i', $filename)) 里面的!去掉呗