了解PHP的explode()函数:将字符串分割成数组的利器
在PHP开发中,经常需要对字符串进行处理,其中一个常用的操作就是将一个字符串分割成数组。而PHP中提供了一个非常方便的函数explode()用于执行这个操作。本文将详细介绍PHP的explode()函数的使用以及常见的应用场景。
函数语法
PHP的explode()函数用于将一个字符串分割成数组,函数语法如下:
array explode(string $delimiter, string $string, int $limit = PHP_INT_MAX)
参数解释
- $delimiter:指定分割的字符或字符串
- $string:要分割的字符串
- $limit:可选,指定返回的数组元素个数的最大值,如果设置为0或负数,则表示返回所有元素。
返回值
返回根据指定分割符分割后的字符串数组。如果分割失败,explode()函数将返回一个空数组。
使用示例
下面是一个简单的用例,该用例将字符串"apple,banana,grape,pear"分割成数组:
$str = "apple,banana,grape,pear";
$fruit_array = explode(",", $str);
print_r($fruit_array);
输出结果为:
Array (
[0] => apple
[1] => banana
[2] => grape
[3] => pear
)
其中,explode()函数的 个参数是逗号,表示要将字符串中的逗号作为分隔符,将整个字符串分割成多个元素。这些元素被储存在返回的数组中。
示例解释
让我们深入探讨如何使用explode()函数。
多字符分隔符
explode()不仅可以用单个字符做分割,还可以用多个字符做分割。例如,我们希望将字符串"apple,banana and grape"分割成数组,以逗号和空格作为分隔符:
$str = "apple,banana and grape";
$fruit_array = explode(", ", $str);
print_r($fruit_array);
输出结果:
Array (
[0] => apple
[1] => banana and grape
)
其中,’, ’表示逗号和一个空格,它是字符串中元素的分割符,explode()根据它的位置将字符串分割为两个元素。
数组元素个数限制
如果您想限制返回的数组元素的个数,可以使用第三个参数$limit。
例如,我们想将字符串"apple, banana, grape, pear"分割成只有两个元素的数组:
$str = "apple, banana, grape, pear";
$fruit_array = explode(", ", $str, 2);
print_r($fruit_array);
输出结果:
Array (
[0] => apple
[1] => banana, grape, pear
)
在这个例子中,$limit被设置为2,所以返回的数组元素的个数被限制为2。 个数组元素是"apple",而第二个数组元素是"banana, grape, pear"。
分割失败
如果指定的分隔符不在字符串中,则explode()函数将返回一个包含整个字符串的单个元素的数组。
例如,"apple, banana, grape, pear"不包含短横线:
$str = "apple, banana, grape, pear";
$fruit_array = explode("-",$str);
print_r($fruit_array);
输出结果:
Array (
[0] => apple, banana, grape, pear
)
在这个例子中,explode()函数的 个参数是短横线,所以返回的数组只包含字符串中的一个元素"apple, banana, grape, pear"。
应用场景
1. 解析查询字符串
在PHP中,我们可以通过使用$_GET、$_POST等服务器变量来获取用户发送的数据。大多数情况下,这些数据以查询字符串的形式发送。查询字符串是一种文本形式的键值对,其格式为key=value。多个键值对用&分隔。
例如:
name=John&age=25&address=USA
我们可以使用explode()将查询字符串分割成键值对数组:
$query = "name=John&age=25&address=USA";
$array = explode("&", $query);
$parameters = array();
foreach ($array as $value) {
$temp = explode("=", $value);
$parameters[$temp[0]] = $temp[1];
}
print_r($parameters);
输出结果:
Array (
[name] => John
[age] => 25
[address] => USA
)
2. 解析HTML标签
在解析HTML标记时,我们可能需要获取标记的属性值。例如,我们有一个开放标签<a href="http://www.google.com">并需要获取href属性的值。我们可以使用explode()将标记分割成一个属性数组:
$tag = '<a href="http://www.google.com">';
$tag_array = explode(" ", $tag);
$attributes = array();
foreach ($tag_array as $value) {
if (strpos($value, "=") !== false) {
$temp = explode("=", $value);
$attributes[$temp[0]] = trim($temp[1], "\"'");
}
}
print_r($attributes);
输出结果:
Array (
[href] => http://www.google.com
)
在这个例子中,我们使用空格作为分隔符,在标记中找到所有的属性和名称。然后,我们使用“=”字符来分割属性名称和属性值,并将它们储存在关联数组$attributes中。
3. 字符串转数组
有时候我们需要将一个逗号分隔的字符串转换成数组:
$str = "apple,banana,grape,pear";
$fruit_array = explode(",", $str);
4. 时间转成int型时间戳
PHP自带函数strtotime可以将人类能够读懂的时间(如:2010年5月12日22时35分30秒、Tue Mar 5 14:42:25 2013)转化成时间戳(从1970年1月1日到现在的秒数)。有的时候,我们需要将这个时间戳保存到数据库中,但是时间戳必须是整型,因此需要使用explode()函数进行转化:
$date_string = "2018-12-12 12:12:12";
$datetime = explode(" ", $date_string);
$date = explode("-", $datetime[0]);
$time = explode(":", $datetime[1]);
$timestamp = mktime($time[0], $time[1], $time[2], $date[1], $date[2], $date[0]);
echo $timestamp;
输出结果:
1544585532
在这个例子中,我们首先使用explode()将日期字符串分割成两个数组:一个数组储存日期,另一个数组储存时间。然后,我们使用PHP自带的函数mktime()将时间转化为整型。
总结
explode()函数是PHP中非常实用的字符串操作函数,它能够将一个字符串分割成数组。我们可以使用不同的分隔符、限定返回的数组元素个数以及在不同的应用场景中使用。它通常用于解析查询字符串、解析HTML标记和将字符串转化成数组等。掌握了explode()函数,可以让你更加便捷的处理字符串。
