php判断字符串是否包含另一个字符串的实现方法有许多的办法,像我们在网上一搜索可看到大量关于字符是否包含指定字符的方法,下面我把这些实用的例子整理一起与大家分享。
例子。explode
代码如下 |
复制代码 |
function checkstr($str){
$needle = "b";//判断是否包含a这个字符
$tmparray = explode($needle,$str);
if(count($tmparray)>1){
return true;
} else{
return false;
}
}
|
原理非常的简单:就是以我们要查找的字符为定界,然后我们再利用explode分成函数,如果分切成功之后并且数组长度大于1那不代码是存在你要找到字符了,否则就没有了,这个只适用于判断字符串中是否存在字符,更多深一层就无法操作了。
例子,strpos()
strpos() 函数返回字符串在另一个字符串中第一次出现的位置
代码如下 |
复制代码 |
<?php
$attach='omr/online/php/img/news/';
//注意要用 !==
//查找的字符串在第一个位置返回是0
if (strpos($attach, 'omr/online') !== false) {
//如果包含omr/online
}
?>
|
例子,strstr()
strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。
代码如下 |
复制代码 |
<?php
$attach='omr/online/php/img/news/';
//注意要用 !==
//返回字符串的其余部分(从匹配点)
if (strstr($attach, 'omr/online') !== false) {
//如果包含omr/online
}
?>
|
总结
我觉得最简单的就是这种了 strpos($a, $b) !== false 如果$a 中存在 $b,则为 true ,否则为 false。
用 !== false (或者 === false) 的原因是如果 $b 正好位于$a的开始部分,那么该函数会返回int(0),那么0是false,但$b确实位于$a中,所以要用 !== 判断一下类型,要确保是严格的 false。昨天晚上去中关村图书大厦,看到一本书中用的是 strpos === true 来判断,这是极其不正确的
图片上传与文件上传在php中都是一样直接使用move_uploaded_file($_FILES["filename"]["tmp_name"]就可以实现了,下面我来给大家分享一个站长分享文件上传例子。
前期需要了解的知识点
move_uploaded_file()文件上传函数
代码如下 |
复制代码 |
if(move_uploaded_file($_FILES["filename"]["tmp_name"])
{
echo '文件上传成功';
}
|
$_FILES php全局变量
$_FILES: 经由 HTTP POST 文件上传而提交至脚本的变量。类似于旧数组 $HTTP_POST_FILES 数组(依然有效,但反对使用)
代码如下 |
复制代码 |
$_FILES['myFile']['name'] 客户端文件的原名称。
$_FILES['myFile']['type'] 文件的 MIME 类型,需要浏览器提供该信息的支持,例如"image/gif"。
$_FILES['myFile']['size'] 已上传文件的大小,单位为字节。
$_FILES['myFile']['tmp_name'] 文件被上传后在服务端储存的临时文件名,一般是系统默认。可以在php.ini的upload_tmp_dir 指定,但用 putenv() 函数设置是不起作用的。
$_FILES['myFile']['error'] 和该文件上传相关的错误代码。['error'] 是在 PHP 4.2.0 版本中增加的。下面是它的说明:(它们在PHP3.0以后成了常量)
UPLOAD_ERR_OK 值:0; 没有错误发生,文件上传成功。
UPLOAD_ERR_INI_SIZE 值:1; 上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。
UPLOAD_ERR_FORM_SIZE 值:2; 上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。
UPLOAD_ERR_PARTIAL 值:3; 文件只有部分被上传。
UPLOAD_ERR_NO_FILE 值:4; 没有文件被上传。 值:5; 上传文件大小为0.
|
核心文件:
upimg.htm
代码如下 |
复制代码 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>上传图片</title>
<script language="javascript">
function $(id){
return document.getElementById(id);
}
function ok(){
$("logoimg").src = $("filename").value;
}
</script>
</head>
<body>
<table border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td height="45" align="center" valign="middle">
<form action="uploadf.php?submit=1" method="post" enctype="multipart/form-data" name="form1"> 请选择上传的图片
<input type="file" name="filename" id="filename" onchange="ok()">
<!-- MAX_FILE_SIZE must precede the file input field -->
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
<input type="submit" name="Submit" value="上传">
</form>
</td>
</tr>
</table>
<font color="red">注意:请上传120*45像素的GIF或者jpg格式的logo图片</font><br/>
logo预览:<img id="logoimg"" width=100% src="images/bg-02.gif"/>
</body>
</html>
uploadf.php
<?php
if(!empty($_GET[submit]))
{
$path="uploadfiles/pic/"; //上传路径
//echo $_FILES["filename"]["type"];
if(!file_exists($path))
{
//检查是否有该文件夹,如果没有就创建,并给予最高权限
mkdir("$path", 0700);
}//END IF
//允许上传的文件格式
$tp = array("image/gif","image/pjpeg","image/png");
//检查上传文件是否在允许上传的类型
if(!in_array($_FILES["filename"]["type"],$tp))
{
echo "格式不对";
exit;
}//END IF
if($_FILES["filename"]["name"])
{
$file1=$_FILES["filename"]["name"];
$file2 = $path.time().$file1;
$flag=1;
}//END IF
if($flag) $result=move_uploaded_file($_FILES["filename"]["tmp_name"],$file2);
//特别注意这里传递给move_uploaded_file的第一个参数为上传到服务器上的临时文件
if($result)
{
//echo "上传成功!".$file2;
echo "<script language='javascript'>";
echo "alert(\"上传成功!\");";
//echo " location='add_aaa.php?pname=$file2'";
echo "</script>";
echo("<input type=\"button\" name=\"Submit\" value=\"确定\" onClick=\"window.opener.setFile('".$file2."');window.close();\">");
echo "图片名称:".$file2;
}//END IF
} else {
echo "file is null!";
}
?>
|
调用示例文件:
testUpload.htm
代码如下 |
复制代码 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>上传图片</title>
<script>
function setFile(f1){
document.frm.logoImg.value=f1;
}
</script>
</head>
<body>
<table border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td height="45" align="center" valign="middle">
<form action="#" method="post" name="frm"> 请选择上传的图片
<input name="regAd.logoImg" id="logoImg" type="text" size="30"/>
<label style="cursor:hand" onClick="window.open('upimg.htm','上传图片','height=200,width=400,top=200,left=200')">上传图片</label><br/>
</form>
</td>
</tr>
</table>
</body>
</html>
|
此程序不足之处分析
上传预览功能
代码如下 |
复制代码 |
function $(id){
return document.getElementById(id);
}
function ok(){
$("logoimg").src = $("filename").value;
}
|
这段代码其实就是一个鸡肋了,在有一些浏览器下是不兼容了,但不会影响到图片上传功能。
程序安全
对于在上传处我们并未进行数据大小限制与程序上传文件类型进行限制,这样可以利用它来上传一些像php文件,这样你的网站就不安全了哦。
一个非常简单的PHP验证码生成例子,在这个PHP验证码生成我们需要使用到php_gd2.dll扩展了,下面我就来给大家整个例子了,希望对各位朋友会带来帮助哦。
使用PHP的GD库扩展类制作验证码的基本步骤:
启用php.ini配置文件中的extension=php_gd2.dll扩展(打开php.ini配置文件,去掉行首的分号后重启Apache即可);
下面是PHP生成验证码的代码:
代码如下 |
复制代码 |
<?php
for($i=0;$i<5;$i++){
$suijishu.=dechex(rand(1,15));//使用循环产生一个十六进制格式的五位数
}
setcookie("useryzm",$suijishu);//创建一个名为useryzm、值为$suijishu的cookie
$img=imagecreatetruecolor(100,30);//创建一个宽100高30的图片验证码
$bg=imagecolorallocate($img,rand(0,255),rand(0,255),rand(0,255));//定义验证码的背景颜色
$sc=imagecolorallocate($img,rand(0,255),rand(0,255),rand(0,255));//定义验证码字体的颜色
imagestring($img,5,rand(0,50),rand(0,15),$suijishu,$sc);//定义字体的位置(左上角为坐标原点)
for($k=0;$k<10;$k++){
imageline($img,rand(1,100),rand(1,100),rand(1,100),rand(1,100),$sc);//在验证码上绘制直线(扰乱作用)
imagesetpixel($img,rand(1,100),rand(1,30),$sc);//在验证码上绘制点(扰乱作用)
}
ob_clean();//清空输出缓冲区(这句很重要)
header("Content-type:image/jpeg");//定义输出图片的格式(image/后面可以是jpeg或png或gif等图片格式)
imagejpeg($img);//输出图象
imageDestroy($img);//释放内存,完成创建
?>
|
下面是HTML中调用验证码的代码:
代码如下 |
复制代码 |
<html>
...
<script language="javascript">
function changeyzm(){
var img = document.getElementById("yzmimg").src = "gdyzm.php?id="+Math.random()*10;
return ;
}
</script>
...
<img" width=100% src="gdyzm.php" name="yzmimg" width="100" height="30" id="yzmimg" title="点击刷新" onclick="changeyzm();" />
...
</html>
|
如果出现"图像“XXXX”因其本身有错无法显示"的错误,很可能是漏了ob_clean();这句,或是文件的物理编码出了问题(修改物理编码的方法可以参考PHP创建utf8文件)
如果没有加ob_clean();这句,在本地测试且物理编码为ANSI时没问题,物理编码为UTF-8时则会报错(图像“XXXX”因其本身有错无法显示)
如果我们直接使用fopen创建会发现文件编码都不是uft-8的了,那么如果要创建uft8文件我们需要进行一些技术处理,下面我搜索了网络上一些通用方法,下面一起来看看吧。
使用PHP创建编码格式为utf-8文件的方法:
第一步:新建一个txt文件,打开,文件->另存为xxx.php,并将编码改为UTF-8,保存。
第二部:在php文件中加入如下代码:
代码如下 |
复制代码 |
<?php
$filename=rand(100,999).".txt";//定义好要创建的文件名称和文件格式(按需要自己改)
$str = "PHP知名网[www.111cn.net]";//待写入新建文件中的内容
if (!$head=fopen($filename, "w+")) {//以读写的方式打开文件,将文件指针指向文件头并将文件大小截为零,如果文件不存在就自动创建
die("尝试打开文件[".$filename."]失败!请检查是否拥有足够的权限!创建过程终止!");
}
if (fwrite($head,$str)==false) {//执行写入文件
fclose($head);
die("写入内容失败!请检查是否拥有足够的权限!写入过程终止!");
}
echo "成功创建UTF-8格式文件[".$filename."],并向该文件中写入了内容:".$str;
fclose($head);
?>
|
使用这种方法创建UTF-8编码文件的关键点:
保证PHP代码文件本身的编码格式为UTF-8
php代码文件的编码格式是什么则创建出来的文件编码也是什么
显示出现乱码的问题
控制页面显示的因素主要有三个:
1.HTML代码控制:标准HTML网页文件中的head标签内部包含了这一句代码<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />,代码中charset=utf-8这句就是告诉浏览器要以utf-8格式将网页中的内容显示出来。
2.PHP代码控制:如果在PHP文件的开头加上header("content-Type: text/html; charset=utf-8");这句代码,也是为了告诉浏览器要以utf-8格式将网页中的内容显示出来。(注:这句代码之前不能有类似echo的输出)
3.文件物理存储属性控制:用记事本打开一个文件,文件->另存为,你在“编码”中所看到的就是当前文件的真正的编码
补充一个fopen例子
代码如下 |
复制代码 |
<?php
$f=fopen("test.txt", "wb");
$text=utf8_encode("a!");
//先用函数utf8_encode将所需写入的数据变成UTF编码格式。
$text="\xEF\xBB\xBF".$text;
//"\xEF\xBB\xBF",这串字符不可缺少,生成的文件将成为UTF-8格式,否则依然是ANSI格式。
fputs($f, $text);
//写入。
fclose($f);
?>
|
这样创建出的文件编码格式确实是utf-8,但是放在文件中的汉字出现了乱码的现象,经过一番调试,代码如下:
代码如下 |
复制代码 |
<?php
$ctxtsubmit="好呀";
$f=fopen("../".$file, "wb");
//$text=utf8_encode($ctxtsubmit);
//先用函数utf8_encode将所需写入的数据变成UTF编码格式。
$text="\xEF\xBB\xBF".$ctxtsubmit;
//"\xEF\xBB\xBF",这串字符不可缺少,生成的文件将成为UTF-8格式,否则依然是ANSI格式。
fputs($f, $text);
//写入。
fclose($f);
?>
|
至于"\xEF\xBB\xBF"为什么加这字符串,我也不明白
php定时跳转我们需要利用header函数输入html或js代码来实现定时跳转了,下面我来介绍一个简单的例子
php代码
代码如下 |
复制代码 |
header("refresh:3;url=http://www.111cn.net");
print('正在加载,请稍等...<br>三秒后自动跳转到一聚教程网哦~~~');
|
输出的html代码就是
<meta http-equiv="refresh" content="3; url=http://www.111cn.net">一样的效果。
这样就实现了3秒之后自动跳转到http://www.111cn.net了哦
友情提示,如果你文件是uft-8编码的话我们要注意不要在header前有输出或BOM字符哦,这可会导致无法跳转。
标签:[!--infotagslink--]