php 几个常用的字符查找函数

 更新时间:2016年11月25日 15:07  点击:1357
介绍了php开发中常用的字符串操作函数,主要是字符查找函数,有需要的朋友可以参考一下
 代码如下 复制代码

 

<?php
//strstr:从左向右查找  返回值:字符串
//strrchr:从右向左查找 返回值:字符串
//strpos:从左向右查找  返回值:整型,假如查找的字符串不存在,则返回空
//strrpos:从右向左查找 返回值:整型
$str="天高任鸟飞,海阔凭鱼跃";//strstr:从左向右查找  strrchr:从右向左查找
echo "原始字符串:".$str."<br />";
echo "用strstr函数搜索“,”的返回结果:".strstr($str,",")."<br>";
echo "用strstr函数搜索“鸟飞”的返回结果:".strstr($str,"鸟飞")."<br>";

$str1="I have a great dream.";
echo "原始字符串:".$str1."<br />";
echo "用strrchr函数搜索“e”的返回结果:".strrchr($str1,"e")."<br>";
echo "用strrchr函数搜索“ea”的返回结果:".strrchr($str1,"ve")."<br>";

$str2="I am an abstract about abroad.";
echo "原始字符串为:".$str2."<br>";
echo "ab在字符串中的第一次出现位置为:".strpos($str2,"ab")."<br>";
echo "ab在字符串中的第一次出现位置为:".strpos($str2,"am")."<br>";
echo "abcd在字符串中第一次出现的位置为:".strpos($str2,"aman")."<br>";

$str3="I am is wang hui.";
echo "原始字符串为:".$str3."<br>";
echo "I在字符串中的最后一次出现位置为:".strrpos($str3,"I")."<br>";
echo "an在字符串中的最后一次出现位置为:".strrpos($str3,"an")."<br>";
echo "i在字符串中最后一次出现的位置为:".strrpos($str3,"i");

?>

 

大多数的 JavaScript 框架如 jquery,Mootools 等,在发出 Ajax 请求时,都会发送额外的 HTTP_X_REQUESTED_WITH 头部信息,头当他们一个ajax请求,因此你可以在服务器端侦测到 Ajax 请求

1,   通过传递_GET参数的方法简单实现网页请求的判断。

url上这么传递:*******.php?ajax

php这么判断:

if(isset($_GET['ajax'])) {

...这是一个ajax请求,然后...

}

else {

...这不是一个ajax请求,然后...

}

这种实现方法很差劲,相当容易容易容易伪造。判断和不判断么有任何区别。
所以又出来一种自认为很科学的处理方式,这种方式确实有一定的学习价值。


Php获取系统变量中的xmlHttpRequest判读。

首先你必须使用jquery,Js发送ajax请求,通过jquery发送的$.ajax, $.get, or $.post方法请求网页内容时,它会向服务器传递一个HTTP_X_REQUESTED_WITH的参数,这个参数的值是xmlHttpRequest。

Js 代码:

 代码如下 复制代码

beforeSend : function (XMLHttpRequest) {

    XMLHttpRequest.setRequestHeader("X-Requested-With","XMLHttpRequest");

};

参数名X-Requested-With,参数值XMLHttpRequest,你可以任意定义。Php取得时候要在参数名前面加上大写的http字样

 

 代码如下 复制代码

if(!emptyempty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
{
//If AJAX Request Then
}else{
//something else
}

1,  如果

你的jquery请求是通过iframe打开网页的,那么HTTP_X_REQUESTED_WITH参数不会被传递,也就是说你没有办法判断请求的类型。

2,  IE5,IE6老版本的浏览器总中$.ajax, $.get, or $.post方法不会自动发送HTTP_X_REQUESTED_WITH的参数到头部信息,因为php中也是无法获取参数进行判断。除非你自己构造XMLHttpRequest对象出来,然后再发送给php脚本,相当于用最原始的js实现ajax功能。这样做,jquery框架本来封装好的ajax就失去意义啦

如果$a和$b指向同一内存地址,自己了不太清楚不过网站找有需要的朋友参考一下。
 代码如下 复制代码

<?php
$a='CC';
$b=$a;//$a和$b指向同一内存地址
$a='DD';
echo $b;
/*
php中对于地址的指向(类似指针)功能不是由用户自己来实现的,
是由Zend核心实现的,php中引用采用的是“写时拷贝”的原理,
就是除非发生写操作,指向同一个地址的变量或者对象是不会被拷贝的。
当$a='DD';
由于$a与$b所指向的内存的数据要重新写一次了,此时Zend核心会自动判断
自动为$b生产一个$a的数据拷贝,重新申请一块内存进行存储。
* */

echo '<hr>';
$c='ABC';
$d=&$c;//$b指向$a的内存地址,传地址赋值
$d='E';
echo $c;
/**
CC
--------------------------------------------------------------------------------
E
* */
?>

<?php
//函数的引用返回
function &test()
{
static $b=0;//申明一个静态变量
$b=$b+1;
echo '$b='.$b;
echo '<br>';
return $b;
}
$a=test();
echo '$a='.$a;//这里不是函数的引用返回,跟普通的函数调用没有区别
$a=&test();  //这种方式才是函数的引用返回。
//至于什么是引用返回呢(PHP手册上说:引用返回用在当想用函数找到引用应该被绑定在哪一个变量上面时。)
//用在这里意思就是test()被绑定在$a上了。
echo '$a='.$a;
$a=6;
test();//这条语句会输出$b的值 为7
echo '$a='.$a;
/*
$b=1
$a=1$b=2
$a=2$b=7
$a=7
* */
?>

<?php
//引用传递
function printArray(&$arr){
     //echo count($arr);
     array_pop($arr);
     echo count($arr);

}
//值传递
function printArray2($arr){
     //echo count($arr);
     array_pop($arr);
     echo count($arr);
}
$a=array(1,2,3);
$b=$a;
//$b=&$a;
printArray($a);
print_r($b);
print_r($a);
echo '<hr>';
printArray($a);
print_r($b);
print_r($a);
/**
  2Array ( [0] => 1 [1] => 2 [2] => 3 ) Array ( [0] => 1 [1] => 2 )
--------------------------------------------------------------------------------
1Array ( [0] => 1 [1] => 2 [2] => 3 ) Array ( [0] => 1 )
  * */
?>
<?php
//对象的引用
class a{
var $name="ABC";
}
$b=new a;
$c=$b;
echo '$b->name='.$b->name;//这里输出ABC
echo '<br>';
echo '$c->name='.$c->name;//这里输出ABC
echo '<br>';
$b->name="DEF";
echo '$b->name='.$b->name;
echo '<br>';
echo '$c->name='.$c->name;
echo '<hr>';
/*
在PHP5中 对象的复制 是通过引用来实现的。
上列中$b=new a; $c=$b; 其实等效于$b=new a; $c=&$b;
PHP5中默认就是通过引用来调用对象,
但有时你可能想建立一个对象的副本,
并希望原来的对象的改变不影响到副本 .
为了这样的目的,PHP定义了一个特殊的方法,称为__clone.
* */
$x=new a;
$y=clone $x;
$x->name='XXX';
echo '$x->name='.$x->name;
echo '<br>';
echo '$y->name='.$y->name;

/*
  $b->name=ABC
$c->name=ABC
$b->name=DEF
$c->name=DEF
--------------------------------------------------------------------------------
$x->name=XXX
$y->name=ABC
  * */
?>

这是一款用户注册的功能,可以实现简单的用户由创建数据库到注册成功,有需要的朋友可以参考一下。
 代码如下 复制代码

<?php教程
$DB_HOST = "localhost";  //数据库教程主机位置
$DB_LOGIN = "root";  //数据库的使用账号
$DB_PASSWORD = "admin";  //数据库的使用密码
$DB_NAME = "flag"; //数据库名称

$conn= mysql教程_connect($DB_HOST, $DB_LOGIN, $DB_PASSWORD);
mysql_select_db($DB_NAME);
?>


************************222222

<?php
functiondb_query($sqlstr) {returnmysql_query($sqlstr);}
functiondb_num_rows($res) {returnmysql_num_rows($res);}
functiondb_fetch_array($res) {returnmysql_fetch_array($res);}
functiondb_fetch_object($res) {returnmysql_fetch_object($res);}
functiondb_data_seek($res,$num){return mysql_data_seek($res,$num);}
functiondb_insert_id($res) {returnmysql_insert_id($res);}
?>


 

**************************333333333333

<?
include("registry_up.htm") // 导入网页上半部
?>
<script>
functioncheck()
{
if(document.regstep1.username.value== "")
{
alert("未输入账号");
returnfalse;
}
if(document.regstep1.userpass.value== "")
{
alert("请勿使用空白密码");
returnfalse;
}
if(document.regstep1.userpass.value!= document.regstep1.userpass2.value)
{
alert("两次输入的密码不相同");
returnfalse;
}

document.regstep1.submit();

}
</script>

<script>
<!--------- 打开会员账号重复性检查功能页面的函数 BEGIN---------->
function Checkname(){
var Name = document.regstep1.username.value;
window.open("uniquecheck.php?name="+Name,"Check","width=300,height=10,status=0,scrollbars=0,resizable=1,menubar=0,toolbar=0,location=0");
}
<!---------- 打开会员账号重复性检查功能页面的函数 END----------->
</script>

<form name="regstep1"method="post" action="registry_do.php">
<?php /*?><inputtype="submit" name="username"value="<?=$username?>">
<inputtype="submit" name="userpass"value="<?=$userpass?>">
<inputtype="submit" name="pass_rem"value="<?=$pass_rem?>">
<inputtype="submit" name="pass_ans"value="<?=$pass_ans?>">
<?php */?>

<BR>
<table width="446" border="0"bordercolor="#000000" align="center"cellspacing="0">
<tr>
<td>
<table width="440" border="0"height="220" align="center" bgcolor="#EEEEEE" cellspacing="0"cellpadding="0">
<tr>
<td colspan="2" bgcolor="#FFFFFF">
<divalign="center"><img src="images/1.GIF"width="298" height="41"></div>
</td>
</tr>
<tr>
<td>
  <div align="center">账   号</div>
</td>
<td height="18">
<divalign="center">
<input type="text"name="username" size="15">
<inputonClick="网页特效:Checkname()" type=button value="检查账号"name="button">
  </div>
</td>
</tr>

<tr>
<td bgcolor="#FFFFFF">
<divalign="center">密   码</div>
</td>
<td height="6" bgcolor="#FFFFFF">
<div align="center">
<inputtype="password" name="userpass" size="20">
</div>
</td>
</tr>
<tr>
<td>
<divalign="center">密 码 确 认</div>
</td>
<td height="2">
<divalign="center">
<inputtype="password" name="userpass2" size="20">
</div>
</td>
</tr>
<tr>
<td bgcolor="#FFFFFF">
<divalign="center">密 码 提 示</div>
</td>
<td height="2" bgcolor="#FFFFFF">
<divalign="center">
<selectname="pass_rem">
<optionvalue="0">您宠物的名字</option>
<optionvalue="1">您最想去的国家</option>
  <optionvalue="2">您最喜欢的运动</option>
<optionvalue="3">您最讨厌的食物</option>
<optionvalue="4">您在家最常做什么</option>
<optionvalue="5">您最爱看的电影</option>
</select>
</div>
  </td>
</tr>
<tr>
<td>
<divalign="center">答   案</div>
</td>
<td height="2">
<divalign="center">
<input type="text"name="pass_ans" size="20">
</div>
</td>
</tr>
<tr>
<td colspan="2" bgcolor="#FFFFFF">
<divalign="center">
<inputtype="reset" name="reset" value="清除重填">
<inputtype="button" name="Submit" value="提交"onClick="check();">
</div>
</td>
</tr>
</table>
</td>
</tr>
</table>
</form>

<?
include("registry_down.htm") // 导入网页下半部
?>

******************************44444444444

<?
include("db_conn.php");
include("db_func.php");

//增加会员账号/密码 BEGIN
$SQLStrUser= "INSERT INTO member (m_username, m_userpass, m_pass_rem, m_pass_ans)";
$SQLStrUser.= " VALUES('$username', '$userpass', '$pass_rem', '$pass_ans') ";
db_query($SQLStrUser);
//增加会员账号及密码 END


?>

<script>
alert("<?php echo "注册完成"; ?>");
  location.href = "www.111cn.net";
</script>

 

****************************55555555555555555


<?
include("db_conn.php");
include("db_func.php");

//查询注册账号名称是否包含不雅字词 BEGIN
$SQLStr= "SELECT * FROM nogood WHERE n_name LIKE '%$username%'";
$res= db_query($SQLStr);
//查询注册账号名称是否包含不雅字词 END

if(db_num_rows($res)>0) // 若查询数据有相符
{
echo"<script>";
echo"alert("请勿使用不雅名称" . $username . "为账号");";
echo"location.href = "registry1.php";";
echo"</script>";
}
?>

 

******************************6^^^^^^^^


<?
include("db_conn.php");
include("db_func.php");

//查询数据库是否有此用户名称BEGIN
$sqlstr= "SELECT * FROM member WHERE m_username='$name'";
$res= db_query($sqlstr);
//查询数据库是否有此用户名称BEGIN

if(db_num_rows($res)>0) //检查查询结果是否有数据
  echo "<br><center>此账号名称" .$name. "已被注册使用</center>";
else
  echo "<br><center>此账号名称" .$name. "尚未有人注册使用</center>";
?>

 

乱码一直是困扰初学者的一个非常大的问题。现在总结下造成乱码的原因及及解决方法,主要是mysql数据库与php页面出现乱码,下面详细的分析了这些原因。希望对大家有所帮助。

一、HTML页面编码:meta http-equiv=content-type content=text/html; charset=utf-8 这里的编码要和数据库教程编码,及连接数据库编码

二、文件在存储编码:比如文件inde.php教程,改变其存储编码为所需编码。只需用EditPlus等文本编辑软件 文件另存为,在编码中选择正确的编码(这点很多人都会忽略)

三、数据库编码:比如用的是phpmyadmin 选择数据库后,选择操作选项。下面有一个整理,这里面也要设置成统一的编码

四、表编码:操作和第三点类似。这里就不重复了

五、字段编码:在建表的建字段的时候,有个整理。如果内容有汉字,就一定要改成统一的编码

六、连接数据库时mysql教程_select_db()后面,要加一句 mysql_query( set names utf8 )

七、 (刚遇到的)本地测试成功后的网站,传到网上去,会有乱码。可能会是在本地导出数据时没有选择正确的编码,所以才会在导入到web上后有乱码问题

[!--infotagslink--]

相关文章

  • php正确禁用eval函数与误区介绍

    eval函数在php中是一个函数并不是系统组件函数,我们在php.ini中的disable_functions是无法禁止它的,因这他不是一个php_function哦。 eval()针对php安全来说具有很...2016-11-25
  • php中eval()函数操作数组的方法

    在php中eval是一个函数并且不能直接禁用了,但eval函数又相当的危险了经常会出现一些问题了,今天我们就一起来看看eval函数对数组的操作 例子, <?php $data="array...2016-11-25
  • Python astype(np.float)函数使用方法解析

    这篇文章主要介绍了Python astype(np.float)函数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-08
  • Python中的imread()函数用法说明

    这篇文章主要介绍了Python中的imread()函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
  • C# 中如何取绝对值函数

    本文主要介绍了C# 中取绝对值的函数。具有很好的参考价值。下面跟着小编一起来看下吧...2020-06-25
  • C#学习笔记- 随机函数Random()的用法详解

    下面小编就为大家带来一篇C#学习笔记- 随机函数Random()的用法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • 运行vbs脚本报错无效字符、中文乱码的解决方法(编码问题)

    今天在写一个vbs的时候,发现中文乱码,后来写好代码正常运行的代码压缩一下给了同事,发现报无效字符,经过验证后发现原来是编码的问题导致,这里就为大家分享一下...2020-06-30
  • 金额阿拉伯数字转换为中文的自定义函数

    CREATE FUNCTION ChangeBigSmall (@ChangeMoney money) RETURNS VarChar(100) AS BEGIN Declare @String1 char(20) Declare @String2 char...2016-11-25
  • C++中 Sort函数详细解析

    这篇文章主要介绍了C++中Sort函数详细解析,sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变...2022-08-18
  • Android开发中findViewById()函数用法与简化

    findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20
  • PHP用strstr()函数阻止垃圾评论(通过判断a标记)

    strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 false。语法:strstr(string,search)参数string,必需。规定被搜索的字符串。 参数sea...2013-10-04
  • PHP函数分享之curl方式取得数据、模拟登陆、POST数据

    废话不多说直接上代码复制代码 代码如下:/********************** curl 系列 ***********************///直接通过curl方式取得数据(包含POST、HEADER等)/* * $url: 如果非数组,则为http;如是数组,则为https * $header:...2014-06-07
  • php中的foreach函数的2种用法

    Foreach 函数(PHP4/PHP5)foreach 语法结构提供了遍历数组的简单方式。foreach 仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量将发出错误信息。...2013-09-28
  • C语言中free函数的使用详解

    free函数是释放之前某一次malloc函数申请的空间,而且只是释放空间,并不改变指针的值。下面我们就来详细探讨下...2020-04-25
  • PHP函数strip_tags的一个bug浅析

    PHP 函数 strip_tags 提供了从字符串中去除 HTML 和 PHP 标记的功能,该函数尝试返回给定的字符串 str 去除空字符、HTML 和 PHP 标记后的结果。由于 strip_tags() 无法实际验证 HTML,不完整或者破损标签将导致更多的数...2014-05-31
  • PHP加密解密函数详解

    分享一个PHP加密解密的函数,此函数实现了对部分变量值的加密的功能。 加密代码如下: /* *功能:对字符串进行加密处理 *参数一:需要加密的内容 *参数二:密钥 */ function passport_encrypt($str,$key){ //加密函数 srand(...2015-10-30
  • SQL Server中row_number函数的常见用法示例详解

    这篇文章主要给大家介绍了关于SQL Server中row_number函数的常见用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-08
  • php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法

    最近遇到一个问题,就是在使用php的mail函数发送utf-8编码的中文邮件时标题出现乱码现象,而邮件正文却是正确的。最初以为是页面编码的问题,发现页面编码utf-8没有问题啊,找了半天原因,最后找到了问题所在。 1.使用 PEAR 的...2015-10-21
  • C#中加载dll并调用其函数的实现方法

    下面小编就为大家带来一篇C#中加载dll并调用其函数的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • C#虚函数用法实例分析

    这篇文章主要介绍了C#虚函数用法,实例分析了C#中虚函数的功能与基本使用技巧,需要的朋友可以参考下...2020-06-25