您的位置:首页技术文章
文章详情页

php字符串函数 str类常见用法示例

【字号: 日期:2022-09-10 11:54:16浏览:40作者:猪猪

本文实例讲述了php字符串函数 str类常见用法。分享给大家供大家参考,具体如下:

str_split(string, leg);//将一个字符 串转换为数组,参数1:要被转换的字符串,参数2:每 段长度, 返回一个转换后的数组

例:

<?php$str = 'Hello Friend';$arr = str_split($str, 3);

Array( [0] => Hel [1] => lo [2] => Fri [3] => end)

ord(string);//返回字符的ASCII码值,,,返回字符串string第一个字符的ASCII码值

例:$test = ’abc’;

$offset = 0;while ($offset >= 0) { echo $offset.': '.ordutf8($text, $offset).'n'; // 97,98,99

sizeof();//count()的别名

end();//将数组的内部指针指向最后一个单元

<?php$fruits = array(’apple’, ’banana’, ’cranberry’);echo end($fruits); // cranberry?>

strlen($string);//获取字符串长度

例:

echo strlen(’hai’);//3

sprintf(format, arg1, arg2, arg++);//把格式化的字符串写入变量中。

format:规定字符串以及如何格式化其中的变量 arg1:规定插到 format 字符串中第一个 % 符号处的参数。 arg2:规定插到 format 字符串中第二个 % 符号处的参数。

例:

<?php$num1 = 123456789;$num2 = -123456789;$char = 50; // ASCII 字符 50 是 2// 注释:格式值 '%%' 返回百分号echo sprintf('%%b = %b',$num1).'<br>'; // 二进制数echo sprintf('%%c = %c',$char).'<br>'; // ASCII 字符echo sprintf('%%d = %d',$num1).'<br>'; // 带符号的十进制数echo sprintf('%%d = %d',$num2).'<br>'; // 带符号的十进制数echo sprintf('%%e = %e',$num1).'<br>'; // 科学计数法(小写)echo sprintf('%%E = %E',$num1).'<br>'; // 科学计数法(大学)echo sprintf('%%u = %u',$num1).'<br>'; // 不带符号的十进制数(正)echo sprintf('%%u = %u',$num2).'<br>'; // 不带符号的十进制数(负)echo sprintf('%%f = %f',$num1).'<br>'; // 浮点数(视本地设置)echo sprintf('%%F = %F',$num1).'<br>'; // 浮点数(不视本地设置)echo sprintf('%%g = %g',$num1).'<br>'; // 短于 %e 和 %fecho sprintf('%%G = %G',$num1).'<br>'; // 短于 %E 和 %fecho sprintf('%%o = %o',$num1).'<br>'; // 八进制数echo sprintf('%%s = %s',$num1).'<br>'; // 字符串echo sprintf('%%x = %x',$num1).'<br>'; // 十六进制数(小写)echo sprintf('%%X = %X',$num1).'<br>'; // 十六进制数(大写)echo sprintf('%%+d = %+d',$num1).'<br>'; // 符号说明符(正)echo sprintf('%%+d = %+d',$num2).'<br>'; // 符号说明符(负)?>

返回结果:

%b = 111010110111100110100010101%c = 2%d = 123456789%d = -123456789%e = 1.234568e+8%E = 1.234568E+8%u = 123456789%u = 18446744073586094827%f = 123456789.000000%F = 123456789.000000%g = 1.23457e+8%G = 1.23457E+8%o = 726746425%s = 123456789%x = 75bcd15%X = 75BCD15%+d = +123456789%+d = -123456789

substr_replace(mixed $string , mixed $replacement , mixed $start [, mixed $length ]);// 替换字符串的子串

$string:输入的字符串, $replacement:用来替换的字符串, $start:为正数时,从$string的start位置开始,为负数时,从$string的末尾开始,,,, $lenght:为正数时,表示被替换的子字符串的长度。为负数时,表示待替换的子字符串结尾处距离string末端的字符个数。

<?php$var = ’ABCDEFGH:/MNRPQR/’;echo 'Original: $var<hr />n'; /* 这两个例子使用 'bob' 替换整个 $var。*/echo substr_replace($var, ’bob’, 0) . '<br />n';echo substr_replace($var, ’bob’, 0, strlen($var)) . '<br />n'; /* 将 'bob' 插入到 $var 的开头处。*/echo substr_replace($var, ’bob’, 0, 0) . '<br />n'; /* 下面两个例子使用 'bob' 替换 $var 中的 'MNRPQR'。*/echo substr_replace($var, ’bob’, 10, -1) . '<br />n';echo substr_replace($var, ’bob’, -7, -1) . '<br />n'; /* 从 $var 中删除 'MNRPQR'。*/echo substr_replace($var, ’’, 10, -1) . '<br />n';?>

strpos();//查找字符串首次出现的位置。

1、

<?php// 忽视位置偏移量之前的字符进行查找$newstring = ’abcdef abcdef’;$pos = strpos($newstring, ’a’, 1); // $pos = 7, 不是 0?>

2、

<?php$mystring = ’abc’;$findme = ’a’;$pos = strpos($mystring, $findme); // 使用 !== 操作符。使用 != 不能像我们期待的那样工作,// 因为 ’a’ 的位置是 0。语句 (0 != false) 的结果是 false。if ($pos !== false) { echo 'The string ’$findme’ was found in the string ’$mystring’'; echo ' and exists at position $pos';} else { echo 'The string ’$findme’ was not found in the string ’$mystring’';}?>

3、

<?php$mystring = ’abc’;$findme = ’a’;$pos = strpos($mystring, $findme); // 注意这里使用的是 ===。简单的 == 不能像我们期待的那样工作,// 因为 ’a’ 是第 0 位置上的(第一个)字符。if ($pos === false) { echo 'The string ’$findme’ was not found in the string ’$mystring’';} else { echo 'The string ’$findme’ was found in the string ’$mystring’'; echo ' and exists at position $pos';}?>

preg_split($pet, $str);//通过一个正则表达式分隔字符串;

$keywords = preg_split('/[s,]+/', 'hypertext language, programming');print_r($keywords);

输出:

array(3) { [0]=> string(9) 'hypertext' [1]=> string(8) 'language' [2]=> string(11) 'programming'}

explode($del, $str, $limit);//使用一个字符串分割另一个字符串

$del:分隔符 $str :字符串 $limit:如果设置了 limit 参数并且是正数,则返回的数组包含最多 limit 个元素,而最后那个元素将包含 string 的剩余部分。如果 limit 参数是负数,则返回除了最后的 -limit 个元素外的所有元素,如果 limit 是 0,则会被当做 1。

<?php$str = ’one|two|three|four’; // 正数的 limitprint_r(explode(’|’, $str, 2)); // 负数的 limit(自 PHP 5.1 起)print_r(explode(’|’, $str, -1));?>

以上例程会输出:

Array( [0] => one [1] => two|three|four)Array( [0] => one [1] => two [2] => three)

parse_str($str);//将字符串解析成多个变量

$str = 'first=value&arr[]=foo+bar&arr[]=baz';parse_str($str);echo $first; // valueecho $arr[0]; // foo barecho $arr[1]; // baz parse_str($str, $output);echo $output[’first’]; // valueecho $output[’arr’][0]; // foo barecho $output[’arr’][1]; // baz

strstr($string,$needle,$before_needle);//查找字符串的首次出现

string,输入字符串。 needle,如果 needle 不是一个字符串,那么它将被转化为整型并且作为字符的序号来使用。 before_needle,若为 TRUE,strstr() 将返回 needle 在 haystack 中的位置之前的部分。

<?php$email = ’name@example.com’;$domain = strstr($email, ’@’);echo $domain; // 打印 @example.com $user = strstr($email, ’@’, true); // 从 PHP 5.3.0 起echo $user; // 打印 name?>

substr($string,$start,$lenght);// 返回字符串的子串(返回字符串 string 由 start 和 length 参数指定的子字符串)

1、

<?php$rest = substr('abcdef', -1); // 返回 'f'$rest = substr('abcdef', -2); // 返回 'ef'$rest = substr('abcdef', -3, 1); // 返回 'd'?>

2、

<?php$rest = substr('abcdef', 0, -1); // 返回 'abcde'$rest = substr('abcdef', 2, -1); // 返回 'cde'$rest = substr('abcdef', 4, -4); // 返回 ''$rest = substr('abcdef', -3, -1); // 返回 'de'?>

3、

<?phpecho substr(’abcdef’, 1); // bcdefecho substr(’abcdef’, 1, 3); // bcdecho substr(’abcdef’, 0, 4); // abcdecho substr(’abcdef’, 0, 8); // abcdefecho substr(’abcdef’, -1, 1); // f // 访问字符串中的单个字符// 也可以使用中括号$string = ’abcdef’;echo $string[0]; // aecho $string[3]; // decho $string[strlen($string)-1]; // f?>

strtr();//转换指定字符

string strtr ( string $str , string $from , string $to )

string strtr ( string $str , array $replace_pairs )

该函数返回 str 的一个副本,并将在 from 中指定的字符转换为 to 中相应的字符。 比如, $from[$n]中每次的出现都会被替换为 $to[$n],其中 $n 是两个参数都有效的位移(offset)。

如果 from 与 to 长度不相等,那么多余的字符部分将被忽略。 str 的长度将会和返回的值一样。

1、

使用两个参数的 strtr() 范例

<?php$trans = array('hello' => 'hi', 'hi' => 'hello');echo strtr('hi all, I said hello', $trans);?>

以上例程会输出:

hello all, I said hi

2、

<?phpecho strtr('baab', 'ab', '01'),'n'; $trans = array('ab' => '01');echo strtr('baab', $trans);?>

以上例程会输出:

1001ba01

str_replace(mixed $search , mixed $replace , mixed $subject [, int &$count ]);//子字符串替换

该函数返回一个字符串或者数组。该字符串或数组是将 subject 中全部的 search 都被 replace 替换之后的结果

<?php// 赋值: <body text=’black’>$bodytag = str_replace('%body%', 'black', '<body text=’%body%’>'); // 赋值: Hll Wrld f PHP$vowels = array('a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U');$onlyconsonants = str_replace($vowels, '', 'Hello World of PHP'); // 赋值: You should eat pizza, beer, and ice cream every day$phrase = 'You should eat fruits, vegetables, and fiber every day.';$healthy = array('fruits', 'vegetables', 'fiber');$yummy = array('pizza', 'beer', 'ice cream'); $newphrase = str_replace($healthy, $yummy, $phrase); // 赋值: 2$str = str_replace('ll', '', 'good golly miss molly!', $count);echo $count;?>

<?php// 替换顺序$str = 'Line 1nLine 2rLine 3rnLine 4n';$order = array('rn', 'n', 'r');$replace = ’<br />’; // 首先替换 rn 字符,因此它们不会被两次转换$newstr = str_replace($order, $replace, $str); // 输出 F ,因为 A 被 B 替换,B 又被 C 替换,以此类推...// 由于从左到右依次替换,最终 E 被 F 替换$search = array(’A’, ’B’, ’C’, ’D’, ’E’);$replace = array(’B’, ’C’, ’D’, ’E’, ’F’);$subject = ’A’;echo str_replace($search, $replace, $subject); // 输出: apearpearle pear// 由于上面提到的原因$letters = array(’a’, ’p’);$fruit = array(’apple’, ’pear’);$text = ’a p’;$output = str_replace($letters, $fruit, $text);echo $output;?>

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php常用函数与技巧总结》、《php字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

标签: PHP
相关文章: