【原创】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);
  • 如果忽略$lengthsubstr()会返回从$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);

转载请注明出处。