preg_split()通过正则表达式实现复杂字符串分割,支持多分隔符、捕获分隔符及去除空元素,适用于不规则分隔场景,而explode()仅支持固定字符串分隔且性能更高,适合简单分割需求。

PHP里,要把字符串按照特定模式拆分成数组,
preg_split()
解决方案: 说实话,当我们遇到需要按复杂规则拆分字符串时,比如不规则的空白、多个不同的分隔符,或者需要跳过某些特定内容时,
explode()
preg_split()
最基本的用法是这样:
<?php
$str = "苹果,香蕉;橙子 葡萄";
// 按照逗号、分号或空格来分割
$array = preg_split('/[,;\s]+/', $str);
print_r($array);
/*
输出:
Array
(
[0] => 苹果
[1] => 香蕉
[2] => 橙子
[3] => 葡萄
)
*/
$str2 = " 你好 世界 PHP ";
// 匹配一个或多个空白字符作为分隔符,并忽略空元素
$array2 = preg_split('/\s+/', $str2, -1, PREG_SPLIT_NO_EMPTY);
print_r($array2);
/*
输出:
Array
(
[0] => 你好
[1] => 世界
[2] => PHP
)
*/
?>preg_split()
$pattern
$subject
$limit
$flags
PREG_SPLIT_NO_EMPTY
PREG_SPLIT_DELIM_CAPTURE
我个人觉得,真正让
preg_split()
立即学习“PHP免费学习笔记(深入)”;
preg_split()
explode()
嗯,这是一个老生常谈的问题,但确实很重要。很多初学者会搞混或者不知道什么时候用哪个。简单来说,
explode()
preg_split()
explode()
explode()
preg_split()
<?php
$data = "item1,item2,item3";
$items = explode(',', $data); // 非常高效
print_r($items);
?>preg_split()
explode()
preg_split()
我的经验是,如果
explode()
explode()
preg_split()
str_replace()
strtok()
preg_split()
PREG_SPLIT_DELIM_CAPTURE
有时候,我们不仅想把字符串拆开,还想知道“是在哪里拆开的”,也就是想把那些作为分隔符的字符也一并捕获到数组里。
PREG_SPLIT_DELIM_CAPTURE
()
我们来看个例子:
<?php
$logEntry = "ERROR: File not found. WARNING: Disk full.";
// 假设我们想按 "ERROR:" 或 "WARNING:" 来分割,并且想保留这些提示
$parts = preg_split('/(ERROR:|WARNING:)/', $logEntry, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
print_r($parts);
/*
输出:
Array
(
[0] => ERROR:
[1] => File not found.
[2] => WARNING:
[3] => Disk full.
)
*/
?>在这个例子里,
(ERROR:|WARNING:)
preg_split()
ERROR:
WARNING:
PREG_SPLIT_DELIM_CAPTURE
PREG_SPLIT_NO_EMPTY
需要注意的是,只有正则表达式中的捕获组才会被这个标志捕获。如果你只是写了
/ERROR:|WARNING:/
PREG_SPLIT_DELIM_CAPTURE
preg_split()
当分隔符模式变得复杂起来,
preg_split()
1. 使用字符类和量词处理多变的分隔符: 比如,你想把一个句子按任何标点符号(逗号、句号、问号、感叹号)和空白字符来分割,并且不关心它们出现的次数:
<?php
$sentence = "Hello, world! How are you?";
// 匹配一个或多个标点符号或空白字符
$words = preg_split('/[.,!?;:\s]+/', $sentence, -1, PREG_SPLIT_NO_EMPTY);
print_r($words);
/*
输出:
Array
(
[0] => Hello
[1] => world
[2] => How
[3] => are
[4] => you
)
*/
?>这里的
[.,!?;:\s]+
+
\s
2. 使用管道符|
|
<?php $dataString =
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号