PHP如何正确提取分句首词并存入数组?代码问题排查
问题排查与代码修正
问题根源
你的代码核心错误在于用累加变量$op填充结果数组:
- 每次循环时,你把不断拼接的
$op存入$names,导致第一个元素是Ann,第二个元素变成了Ann Mike,完全不符合预期。 - 额外冗余:代码里的
$op、$rr变量都是无用的,只会干扰逻辑。
修正后的代码
直接遍历每个分句,提取当前分句的首词并处理引号后,直接加入结果数组即可:
$names = array(); $str = 'Ann is good,"Mike loves cooking"'; $result = explode(',', $str); // 按逗号分割分句 foreach($result as $value) { // 先去掉分句前后的引号和空白字符,再按空格分割取首词 $cleanValue = trim($value, ' "\''); $tmp = explode(' ', $cleanValue); // 将处理后的首词加入数组 $names[] = $tmp[0]; } print_r($names);
运行结果
执行后会得到预期输出:
Array ( [0] => Ann [1] => Mike )
额外优化(可选)
如果分句中可能存在多个连续空格,或者首词后有特殊字符,可以用正则表达式更精准提取首词:
$names = array(); $str = 'Ann is good,"Mike loves cooking"'; $result = explode(',', $str); foreach($result as $value) { preg_match('/^["\']?(\w+)["\']?/', trim($value), $matches); if(!empty($matches[1])) { $names[] = $matches[1]; } } print_r($names);
内容的提问来源于stack exchange,提问作者Nancy Moore
相关产品推荐
相关产品推荐

