有时我们需要根据特定的分隔符来划分字符串数据,以达到编程的目的。在PHP中存在许多方法来完成这一任务。PHP的三个内置函数可以用来分割字符串数据,它们是explode()、str_split()和preg_split()。这些函数根据特定的分隔符或模式,通过分割字符串值来创建一个数组。这些函数是如何工作的,以及这些函数在拆分PHP字符串时的用途在本教程中已经展示。
前提条件
本教程的例子中使用的脚本是基于PHP 8版本编写的。在执行本脚本的例子之前,请做以下工作。
- 安装 apache2 和 PHP 8。
- 为/var/www/html文件夹下的所有文件和文件夹设置执行权限,所有的PHP文件将存放在该文件夹下。
使用explode()函数分割字符串
explode()函数用于根据一个特定的分隔符值来分割一个字符串,这个分隔符值是另一个字符串。这个函数的语法如下。
语法。
array explode (stringstring [,int$limit ] )
这些函数的前两个参数是强制性参数,第三个参数是可选的。第一个参数包含用于分割字符串的分隔符值。第二个参数包含将根据定界符分割的主字符串。第三个参数值用于限制分割的数量,可以是一个正数或负数。它在分割字符串后返回一个字符串值的数组。
Explode()函数的使用
本教程的这一部分展示了explode()函数在没有可选参数和有可选参数时的不同用法。
例子-1:根据空间分割字符串并将其存储到一个数组中
用下面的脚本创建一个PHP文件,根据空格来分割一个字符串。在这里,**explode()**将在根据空格分割字符串 "I like Programming "后返回一个包含三个元素的数组。接下来,数组的值将通过使用索引被打印出来。
"; //Print the splitted values in each line echo "The splitted values of the string are:
"; echo $split\_arr\[0\]."
"; echo $split\_arr\[1\]."
"; echo $split\_arr\[2\]."
"; ? **输出。** 执行上述脚本后会出现以下输出。这里,文件名是**split1.php**,存放在**/var/www/html/code**文件夹内。 [http://localhost/code/split1.php](http://localhost/code/split1.php)  例2:用极限值分割字符串 ------------ 用下面的脚本创建一个PHP文件,根据冒号(:)分割一个字符串。这里,第一个没有限制的**explode()** 函数在根据冒号分割字符串**"'HTML:CSS:JavaScript:PHP:MySQL**"后,将返回一个有五个元素的数组。 第二个explode**()** 函数有一个正的限制值,在分割同一字符串后将返回一个有三个元素的数组。第三个**explode()** 函数的极限值为负数,在分割同一字符串后将返回一个由四个元素组成的数组。 无限制的分割值。
"; //根据冒号无限制地分割字符串 $crs\_arr \= [explode](http://www.php.net/explode)(':', $courses); foreach ($crs\_arr as $val) { echo $val."
"; } echo "
带正数限制的分割值:
"; //根据冒号分割字符串,带正数限制 $crs\_arr \= [explode](http://www.php.net/explode)(':', $courses, 3); for ($i \= 0; $i< 3; $i++) { echo $crs\_arr\[$i\]."
"; } echo "
有负数限制的分割值。
"; //以冒号为基础拆分字符串,有负数限制 $crs\_arr \= [explode](http://www.php.net/explode)(':', $courses,\-1); foreach ($crs\_arr as $val) { echo $val."
"; } ?>
输出。
执行上述脚本后会出现以下输出。这里,文件名是split2.php,存放在**/var/www/html/code**文件夹内。
http://localhost/code/split2.php
使用str_split()函数分割字符串
**str_split()是另一个将字符串分割成没有任何分隔符的数组的函数,如explode()**函数。这个函数的语法如下。
语法。
array str_split (stringsplit_length = 1 ] )
这个函数的第一个参数是强制参数,第二个参数是可选参数。如果省略了可选参数,那么该函数将返回一个包含在字符串中的字符数组。可选参数用于设置数组中每个元素的长度。
例3:使用str_split()函数分割字符串
用下面的脚本创建一个PHP文件,分割一个字符串并将其值存储到一个数组中。这里,第一个str_split()函数已经被使用,没有一个可选的参数,它将创建一个字符数组。第二个str_split()函数使用了可选参数,它将创建一个长度为7个字符的字符串数组。
"; $split\_arr \= [str\_split](http://www.php.net/str_split)($text); foreach ($split\_arr as $val) { if($val \== '') { echo ""; continue; } echo $val; } //以长度分割字符串 echo "
以长度分割的值。"; $split\_arr \= [str\_split](http://www.php.net/str_split)($text, 7); foreach ($split\_arr as $val) echo "
".$val; ?>
输出。
执行上述脚本后将出现以下输出。这里,文件名是split3.php,存放在**/var/www/html/code**文件夹中。
http://localhost/code/split3.php
使用Preg_split()函数分割字符串
preg_split()函数用于分割基于字符串的正则表达式模式。这个函数的语法如下。
语法。
array preg_split (stringstring [,intflags])。
这个函数的第一个参数包含用来分割字符串的正则表达式模式。第二个参数包含将被分割的字符串。可选的参数limit用于设置子串的极限。可选的参数flag用于以多种方式设置返回值。
例4:使用Preg_split()函数分割字符串
用下面的脚本创建一个PHP文件,根据一个模式分割一个字符串,并将其值存储到一个数组中。这里,第一个preg_split()函数已经被使用,没有任何可选的参数,它将通过用模式**"[0-9]+**"分割字符串 "Hello000 World"来创建一个有两个元素的数组。
$text"; echo "The splitted string values:
"; //根据模式分割字符串 $split\_arr \= [preg\_split](http://www.php.net/preg_split)("\[0-9\]+", $text); //打印分割的值 foreach ($split\_arr as $val) echo $val; ?>
输出。
执行上述脚本后会出现以下输出。这里,文件名是split4.php,存放在**/var/www/html/code**文件夹内。
http://localhost/code/split4.php
总结
本教程通过使用多个例子解释了在PHP中分割字符串的三种不同方法,以帮助PHP新用户通过使用PHP脚本轻松分割字符串。