本文目录一览:
1、PHP 查找中文字符串 2、php中strstr stristr strcchr 和strpos的区别 3、php 中的strstr()与strchr()的区别 4、PHP中如何判断一个字符串中是否有某个字符? 5、php strlen utf8一个中文算3个字节吗?
PHP 查找中文字符串
在PHP中查找中文字符,有两种方案:
将PHP保存为与欲查找中文一样的编码,然后使用strpos
查找。
将PHP保存为UTF-8无BOM编码,然后转换字符串编码为UTF-8,再用strpos
查找。
第一种方法:
strpos($curl_res, '中文');
第二种方法:
$str = mb_convert_encoding($str, 'utf-8', 'gbk');
mb_strpos($str, '中文');
注意:函数中的中文字符串参数的编码,必须要和PHP文件保存格式的编码一致。
php中strstr stristr strcchr 和strpos的区别
strstr
— 查找字符串的首次出现,返回值是开始出现到字符串结尾的字符串。
stristr
是strstr
的忽略大小写版本,作用同上。
strrchr
— 查找指定字符在字符串中的最后一次出现。
strpos
— 查找字符串首次出现的位置。
没有strcchr
这个函数。
php 中的strstr()与strchr()的区别
strchr()
和strstr()
是同义函数。功能效用完全一样。
echo strstr('abc@123.com', '@'); // 默认返回查找值@之后的尾部,@123.com
echo strstr('abc@123.com', '@', TRUE); // 参数设定true, 返回查找值@之前的首部,abc
PHP中如何判断一个字符串中是否有某个字符?
PHP中如何判断一个字符串中是否有某个字符,如下:
PHP语言是一个功能强大的嵌入式HTML脚本语言,它的易用性让许多程序员选择使用。PHP判断字符串的包含,可以使用PHP的内置函数strstr
、strpos
、stristr
直接进行判断。也可以通过explode
函数的作用写一个判断函数。
strstr
:返回一个从被判断字符开始到结束的字符串,如果没有返回值,则不包含。
<?php
/*如手册上的举例*/
$email = 'user@example.com';
$domain = strstr($email, '@');
echo $domain; // prints @example.com
?>
stristr
:它和strstr
的使用方法完全一样。唯一的区别是stristr
不区分大小写。strpos
:返回boolean值。FALSE和TRUE不用多说。用“===”进行判断。strpos
在执行速度上都比以上两个函数快,另外strpos
有一个参数指定判断的位置,但是默认为空。意思是判断整个字符串。缺点是对中文的支持不好。
<?php
$str = 'abc';
$needle = 'a';
$pos = strpos($str, $needle);
?>
- 用
explode
进行判断:
function checkstr($str) {
$needle = "a"; // 判断是否包含a这个字符
$tmparray = explode($needle, $str);
if (count($tmparray) > 1) {
return true;
} else {
return false;
}
}
php strlen utf8一个中文算3个字节吗?
UTF-8是变长编码,不一定是3字节,可能是2~3,当然ASCII字符还是1字节。GBK也是变长编码,非ASCII的2字节,ASCII还是1字节。这两个编码对于非ASCII字符,都是多字节的,并且多字节字符每个字节都是小于127的,也就是负数(最高位是1)。当然,PHP里的strlen
不是依靠判断字符串结尾的,因为PHP是脚本语言,它的字符串和C++的string是一样的,将存储的字节个数当作字符串长度。
PHP里想数数有多少个字节用strlen
,想数数有多少个字符,用mb
系列函数,自己去了解一下。还有些需求,比如字符串匹配查找之类的,GBK是存在双字节匹配问题的,两个连续汉字的中间2个字节可能被误认为其他字符,所以不能用strstr
之类的字节匹配函数(PHP里是纯字节匹配的,不关心),但UTF-8是可以的,它不会有类似的冲突。另外最好的做法当然还是用mb
系列,安全可靠,而且还支持猜编码功能。