PHP查找以Mon开头的字符串并存入数组0位的实现方法
PHP筛选指定前缀单词实现方案
你原有代码存在两个基础错误,先修正:
- 数组无法直接通过
echo输出,查看数组内容需要用print_r()或var_dump() - 转义换行符
\n必须放在双引号内才会生效,单引号包裹时会被当成普通字符串输出
要筛选所有以Mon开头的单词并存入新数组0号位置,优先使用PHP原生字符串函数实现,性能比正则匹配更高,代码可读性也更好。
完整实现代码(PHP 8.0+ 推荐写法)
<?php $towns = 'Monday Tuesday Sunday Friday'; $towns1 = strtolower($towns); $words = explode(" ", $towns1); $newArr = []; // 筛选所有前缀为mon的单词(已转小写,所以匹配小写前缀) $matched = array_filter($words, function($item) { return str_starts_with($item, 'mon'); }); // 将匹配结果存入新数组0号位 $newArr[0] = array_values($matched); // 测试输出结果 print_r($newArr);
低版本PHP兼容写法(PHP 8.0以下)
如果你的运行环境低于PHP8.0,没有原生str_starts_with()函数,把筛选逻辑里的判断替换成strpos()判断即可:
$matched = array_filter($words, function($item) { // 严格等于0代表字符串从位置0开始就是目标前缀 return strpos($item, 'mon') === 0; });
可选调整
如果你确定原字符串里只会有一个匹配结果,不需要存所有匹配词的集合,可以直接把匹配到的第一个词存入0号位:
$newArr[0] = !empty($matched) ? reset($matched) : '';
上述代码运行后,匹配到的monday就会按要求存入新数组的0号位置。
内容的提问来源于stack exchange,提问作者Alex Singh
相关产品推荐
相关产品推荐

