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


Posted in PHP onMay 15, 2020

本文实例讲述了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 和 %f
echo sprintf("%%G = %G",$num1)."<br>"; // 短于 %E 和 %f
echo 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';
 
// 正数的 limit
print_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; // value
echo $arr[0]; // foo bar
echo $arr[1]; // baz
 
parse_str($str, $output);
echo $output['first']; // value
echo $output['arr'][0]; // foo bar
echo $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、

<?php
echo substr('abcdef', 1);   // bcdef
echo substr('abcdef', 1, 3); // bcd
echo substr('abcdef', 0, 4); // abcd
echo substr('abcdef', 0, 8); // abcdef
echo substr('abcdef', -1, 1); // f
 
// 访问字符串中的单个字符
// 也可以使用中括号
$string = 'abcdef';
echo $string[0];         // a
echo $string[3];         // d
echo $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、

<?php
echo strtr("baab", "ab", "01"),"\n";
 
$trans = array("ab" => "01");
echo strtr("baab", $trans);
?>

以上例程会输出:

1001
ba01

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 1\nLine 2\rLine 3\r\nLine 4\n";
$order  = array("\r\n", "\n", "\r");
$replace = '<br />';
 
// 首先替换 \r\n 字符,因此它们不会被两次转换
$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 之入门篇
Dec 04 PHP
PHP iconv 解决utf-8和gb2312编码转换问题
Apr 12 PHP
PHP的array_diff()函数在处理大数组时的效率问题
Nov 27 PHP
php 启动报错如何解决
Jan 17 PHP
php 批量添加多行文本框textarea一行一个
Jun 03 PHP
PHP中比较时间大小实例
Aug 21 PHP
PHP的Yii框架的常用日志操作总结
Dec 08 PHP
PHP使用strtotime获取上个月、下个月、本月的日期
Dec 30 PHP
PHP命令行执行整合pathinfo模拟定时任务实例
Aug 12 PHP
PHP实现将多个文件中的内容合并为新文件的方法示例
Jun 10 PHP
PHP7 mongoDB扩展使用的方法分享
May 02 PHP
laravel 解决Eloquent ORM的save方法无法插入数据的问题
Oct 21 PHP
PHP数组array类常见操作示例
May 15 #PHP
php数值计算num类简单操作示例
May 15 #PHP
Thinkphp 框架配置操作之动态配置、扩展配置及批量配置实例分析
May 15 #PHP
Thinkphp 框架配置操作之配置加载与读取配置实例分析
May 15 #PHP
PHP程序员简单的开展服务治理架构操作详解(三)
May 14 #PHP
PHP程序员简单的开展服务治理架构操作详解(二)
May 14 #PHP
PHP程序员简单的开展服务治理架构操作详解(一)
May 14 #PHP
You might like
全国FM电台频率大全 - 9 上海市
2020/03/11 无线电
swfupload 多文件上传实现代码
2008/08/27 PHP
Zend Studio 无法启动的问题解决方法
2008/12/04 PHP
PHP中的日期加减方法示例
2014/08/21 PHP
Yii配置与使用memcached缓存的方法
2016/07/13 PHP
PHPExcel 修改已存在Excel的方法
2018/05/03 PHP
JS控制显示隐藏兼容问题(IE6、IE7、IE8)
2010/04/01 Javascript
仿jQuery的siblings效果的js代码
2011/08/09 Javascript
jquery 如何动态添加、删除class样式方法介绍
2012/11/07 Javascript
jquery显示和隐藏div特效实例
2013/02/27 Javascript
Jquery 垂直多级手风琴菜单附源码下载
2015/11/17 Javascript
jquery UI Datepicker时间控件的使用及问题解决
2016/04/28 Javascript
jQuery配合coin-slider插件制作幻灯片效果的流程解析
2016/05/13 Javascript
JS中的数组转变成JSON格式字符串的方法
2017/05/09 Javascript
Angular中的$watch、$watchGroup、$watchCollection
2017/06/25 Javascript
JS计算两个时间相差分钟数的方法示例
2018/01/10 Javascript
vscode 插件开发 + vue的操作方法
2020/06/05 Javascript
vue cli3.0打包上线静态资源找不到路径的解决操作
2020/08/03 Javascript
[19:26]TNC vs EG (BO3)
2018/06/07 DOTA
详解Django中类视图使用装饰器的方式
2018/08/12 Python
在Python中pandas.DataFrame重置索引名称的实例
2018/11/06 Python
Python为何不能用可变对象作为默认参数的值
2019/07/01 Python
pycharm设置当前工作目录的操作(working directory)
2020/02/14 Python
Python编程快速上手——疯狂填词程序实现方法分析
2020/02/29 Python
Python Request类源码实现方法及原理解析
2020/08/17 Python
检测浏览器是否支持html5视频的代码
2013/03/28 HTML / CSS
沙特阿拉伯网上购物:Sayidaty Mall
2018/05/06 全球购物
G-Form护具官方网站:美国运动保护装备
2019/09/04 全球购物
车间操作工岗位职责
2013/12/19 职场文书
优质服务演讲稿
2014/05/14 职场文书
自我管理的活动方案
2014/08/25 职场文书
2014年班干部工作总结
2014/11/25 职场文书
见义勇为事迹材料
2014/12/24 职场文书
Python中X[:,0]和X[:,1]的用法
2021/05/10 Python
python字符串的多行输出的实例详解
2021/06/08 Python
MySQL数据库之内置函数和自定义函数 function
2022/06/16 MySQL