php数组怎样筛选含换行符项

来源:个人站长作者:盲改大师头衔:程序员
导读:本期聚焦于小伙伴创作的《php数组怎样筛选含换行符项》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《php数组怎样筛选含换行符项》有用,将其分享出去将是对创作者最好的鼓励。

在php开发中,处理数组时经常会遇到需要筛选特定元素的场景,其中筛选包含换行符的数组项是比较常见的需求,比如清洗用户输入的表单数据、处理文本文件解析后的数组内容等,掌握对应的筛选方法能有效提升开发效率。

php数组怎样筛选含换行符项

换行符的常见表示形式

在php中,换行符主要有两种常见表示方式,不同系统下的换行符可能存在差异,筛选时需要注意覆盖这两种情况:

  • n:Unix、Linux、macOS系统下的换行符,也是php中字符串最常用的换行表示
  • rn:Windows系统下的换行符,由回车符和换行符组合而成

使用array_filter函数筛选

array_filter是php内置的数组过滤函数,它会遍历数组中的每个元素,将元素传入回调函数,保留回调函数返回true的元素,非常适合用来筛选包含换行符的数组项。

基础筛选实现

我们可以通过检测字符串中是否包含换行符来完成筛选,这里使用strpos函数来检测换行符是否存在,注意strpos返回0表示换行符在字符串开头,返回false才表示不存在,所以需要用严格不等于判断。

<?php
// 原始数组,包含普通项和含换行符的项
$originArray = [
    '正常内容1',
    "包含换行n的内容",
    '正常内容2',
    "包含Windows换行rn的内容",
    "开头有换行n的内容",
    '正常内容3'
];

// 筛选包含换行符的数组项
$filteredArray = array_filter($originArray, function($item) {
    // 检测是否包含n或者rn换行符
    return strpos($item, "n") !== false || strpos($item, "rn") !== false;
});

// 重置数组索引,让结果数组的键从0开始
$filteredArray = array_values($filteredArray);

// 打印筛选结果
print_r($filteredArray);
?>

上述代码的输出结果会包含三个包含换行符的数组元素,分别是"包含换行n的内容"、"包含Windows换行rn的内容"、"开头有换行n的内容"。

封装成通用函数

如果项目中多次需要筛选包含换行符的数组项,可以将其封装成通用函数,方便复用:

<?php
/**
 * 筛选数组中包含换行符的项
 * @param array $array 待筛选的数组
 * @return array 包含换行符的数组项,索引重置后返回
 */
function filterArrayWithNewline(array $array): array {
    $result = array_filter($array, function($item) {
        // 仅处理字符串类型的元素,非字符串元素直接跳过
        if (!is_string($item)) {
            return false;
        }
        return strpos($item, "n") !== false || strpos($item, "rn") !== false;
    });
    return array_values($result);
}

// 测试封装的函数
$testArray = ['test', "anb", 123, "crnd", true];
$res = filterArrayWithNewline($testArray);
print_r($res);
?>

这个通用函数增加了类型判断,会跳过非字符串类型的数组元素,避免非字符串元素调用strpos函数产生警告错误。

使用foreach遍历筛选

如果不想使用array_filter函数,也可以通过foreach遍历数组的方式手动筛选,逻辑更直观,适合新手理解:

<?php
$originArray = [
    '普通文本',
    "带换行的文本n第二行",
    '另一段普通文本',
    "Windows换行文本rn第二行"
];

$filteredItems = [];
foreach ($originArray as $item) {
    if (is_string($item)) {
        // 检测是否包含换行符
        if (strpos($item, "n") !== false || strpos($item, "rn") !== false) {
            $filteredItems[] = $item;
        }
    }
}

print_r($filteredItems);
?>

这种方式和array_filter的实现逻辑一致,只是遍历方式不同,最终得到的筛选结果也相同。

注意事项

  • 筛选前最好先判断数组元素是否为字符串类型,非字符串元素不存在换行符的概念,强行检测会导致php抛出警告。
  • 如果数组中的换行符是经过转义的,比如存储的是\n而不是真正的换行符,需要先将转义字符还原再检测,或者使用strpos($item, '\n')来检测转义后的换行符字符串。
  • 使用strpos检测时,一定要用严格不等于!== false判断,因为如果换行符在字符串开头,strpos会返回0,用普通的!= false判断会把0当成false,导致漏判。

方法对比

两种方式的特点对比如下:

筛选方式优点缺点
array_filter函数代码简洁,函数式编程风格,一行即可完成筛选逻辑回调函数逻辑复杂时可读性会下降
foreach遍历逻辑直观,容易添加额外的处理逻辑,新手更容易理解代码相对更长,需要手动维护结果数组

开发者可以根据项目的代码风格和实际需求选择合适的筛选方式,两种方式的筛选效果是一致的。

php数组换行符筛选array_filter字符串检测php教程修改时间:2026-07-10 03:27:32

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。