【原创】PHP字符串操作函数集
本文总结了常用的PHP原生字符串操作函数,并给出其示例,便于使用者查找。
访问子串strpos()
想知道一个字符串是否包含一个特定的子串。
if(strpos($_POST['email'],'@') === false)
{
print 'There was no @ in the e-mail address!';
}
strpos()
的返回值是子串在字符串中出现的第一个位置。如果没有找到子串,返回false。- 如果子串位于字符串的起始位置,返回0。
- 为了区分0和false,必须使用恒等符号(===),或非恒等符号(!==)。
抽取子串substr()
希望从字符串中的某个特定位置开始抽取这个字符串的一部分。
$substring = substr($string,$start,$length);
$username = substr($_GET['username'],0,8);
- 如果忽略
$length
,substr()
会返回从$start
到原字符串末尾的子串。 - 如果
$start
大于字符串的长度,substr()将返回false
。 - 如果
$start+$length
大于字符串长度,substr()
将返回从$start
开始到字符串末尾的所有字符。 - 如果
$start
为负数,substr()
将从字符串末尾倒数来确定子串从哪里开始。 - 如果
$start
为负数,且超过了字符串开始位置,如$start=-27
,字符串长度为20,substr()
将把$start
当作0来处理。
替换子串substr_replace()
希望用另外一个不同的字符串来替换一个子串。
//从位置为$start到$old_string末尾的部分替换为$new_substring
$new_string = substr_replace($old_string,$new_string,$start);
//从位置$start开始的$length个字符替换为$new_substring
$new_string = substr_replace($old_string,$new_substring,$start,$length);
- 如果没有指定
$length
参数,将替换从$start
到末尾的所有字符。 - 如果
$start
为负数,会从$old_string
末尾倒数$start
个字符来放置新字串。 - 如果
$start
和$length
为0,新字串将插入到$old_string
的开始位置。
查找子串strstr()
判断字符串a是不是字符串b的子串。
$string = "This weekend, I'm going shopping for a pet chicken.";
$vowels = 0;
for($i=0,$j=strlen($string);$i<$j;$i++)
{
if(strstr('aeiouAEIOU',$string[$i]))
{
$vowels++;
}
}
按字节反转strrev()
希望反转一个字符串中的单词或字节。
//按字节反转字符串
print strrev('Hello world!');
//输出为:!dlrow olleH
//按单词反转字符串
$string = "Once upon a time there was a turtle.";
$words = explode(' ',$string);//将字符串分解成单词
$words = array_reverse($words);//反转单词数组
$string = implode(' ',$words);
print $string;
//输出为:turtle. a was there time a upon Once
//按单词反转字符串简洁写法
$string = "Once upon a time there was a turtle.";
$string_reverse = implode(' ',array_reverse(explode(' ',$string)));
随机字符串str_rand()
生成一个随机字符串。
//生成一个16位莫尔斯码
print str_rand(16,'.-');
句首字母大写ucfirst()
print ucfirst("how are you!");
每个首字母大写ucwords()
print ucwords("the prince of wales");
字母大写strtoupper()
print strtoupper("the prince of wales");
字母小写strtolower()
print strtlower('one');
去除字符串首尾的空格trim(),ltrim(),rtrim()
$zipcode = trim($_GET['zipcode']);
$name = ltrim($_GET['name']);
$tel = rtrim($_GET['tel']);
将行格式化为 CSV 并写入一个打开的文件中fputcsv()
$list = array
(
"Peter,Griffin,Oslo,Norway",
"Glenn,Quagmire,Oslo,Norway",
);
$file = fopen("contacts.csv","w");
foreach ($list as $line)
{
fputcsv($file,split(',',$line));
}
fclose($file);
从打开的文件中解析一行,校验 CSV 字段fgetcsv()
$file = fopen("contacts.csv","r");
print_r(fgetcsv($file));
fclose($file);
用固定字符分解字符串explode()
$str = "www.txeet.com";
print_r (explode(".",$str));
用正则表达式分解字符串preg_split()
//使用逗号或空格(包含" ", \r, \t, \n, \f)分隔短语
$keywords = preg_split("/[\s,]+/", "hypertext language, programming");
print_r($keywords);
使文本在指定长度自动换行wordwrap()
$str = "An example of a long word is: Supercalifragulistic";
echo wordwrap($str,15,"
\n");
数据装入一个二进制字符串pack()
echo pack("C3",80,72,80);