You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

技术需求:在数组各索引中查找指定字符串的后续单词

从数组元素中提取指定字符串的后续单词

嘿,我来帮你搞定这个需求——遍历数组里的每个元素,找出指定字符串后面跟着的单词/内容对吧?先把你的需求和待处理数组理清楚:

需求明确

我们需要处理给定的数组,针对每个元素里的指定目标字符串,提取出它后面的相关内容(可能是单个单词,也可能是一段文本)。

待处理的数组(PHP格式)

$inputArray = [
    '咨询*S R航空票务及货币兑换(金奈T Nagar区)* 用户Muruganandam在Justdial平台咨询了您的相关业务类别,反馈详情 ___1nam Muruganandam先生 来电需求:国内航空票务代理 来电日期及时间:2018年4月26日周四 13:54:31 ___ph +919080842161 ___1em nmsmurugan2000@gmail.com',
    '咨询*S R航空票务及货币兑换(金奈T Nagar区)* 用户Muruganandam咨询了您的相关业务类别……'
];

两种实用解决方案

根据你的实际需求(比如是提取单个单词还是整段内容,目标字符串是固定还是有规律),我给你准备了两种方法:

方法1:字符串定位截取(适合固定目标字符串的场景)

如果你的目标字符串是固定的(比如___1nam、来电需求:这类),用strpos找到位置再截取就很直接:

// 先定义要查找的所有目标字符串
$targets = ['___1nam', '来电需求:', '___ph', '___1em'];

foreach ($inputArray as $idx => $item) {
    echo "处理第{$idx}个元素:\n";
    foreach ($targets as $target) {
        // 找到目标字符串在当前元素中的位置
        $pos = strpos($item, $target);
        if ($pos !== false) {
            // 从目标字符串结束的位置开始截取
            $afterContent = substr($item, $pos + strlen($target));
            // 如果你只需要第一个单词,用空格分割取第一个元素就行
            $firstWord = explode(' ', trim($afterContent))[0];
            echo "- 「{$target}」后面的第一个单词:{$firstWord}\n";
            // 要是需要后面全部内容,直接输出去空格后的结果
            echo "- 「{$target}」后面的全部内容:" . trim($afterContent) . "\n";
        } else {
            echo "- 元素里没找到「{$target}」这个目标哦\n";
        }
    }
    echo "-------------------------\n";
}

方法2:正则表达式(适合复杂格式或有规律的目标字符串)

如果你的目标字符串是有规律的(比如都是___开头的标记),用正则表达式匹配会更灵活,能一次性提取所有符合规则的内容:

foreach ($inputArray as $idx => $item) {
    echo "处理第{$idx}个元素:\n";
    // 匹配所有___xxx格式的标记,捕获后面的内容直到下一个标记或字符串结束
    preg_match_all('/___(\w+)\s+(.+?)(?=\s+___|$)/', $item, $matches);
    if (!empty($matches[1])) {
        foreach ($matches[1] as $key => $tag) {
            echo "- 标记「___{$tag}」的后续内容:{$matches[2][$key]}\n";
        }
    }
    // 单独提取「来电需求:」后面的内容
    preg_match('/来电需求:(.+?)(?=\s+来电日期|$)/', $item, $demandMatch);
    if (!empty($demandMatch[1])) {
        echo "- 来电需求内容:{$demandMatch[1]}\n";
    }
    echo "-------------------------\n";
}

运行效果示例

拿第一个数组元素来说,运行代码后会输出:

处理第0个元素:
- 「___1nam」后面的第一个单词:Muruganandam先生
- 「___1nam」后面的全部内容:Muruganandam先生 来电需求:国内航空票务代理 来电日期及时间:2018年4月26日周四 13:54:31 ___ph +919080842161 ___1em nmsmurugan2000@gmail.com
- 「来电需求:」后面的第一个单词:国内航空票务代理
- 「来电需求:」后面的全部内容:国内航空票务代理 来电日期及时间:2018年4月26日周四 13:54:31 ___ph +919080842161 ___1em nmsmurugan2000@gmail.com
- 「___ph」后面的第一个单词:+919080842161
- 「___ph」后面的全部内容:+919080842161 ___1em nmsmurugan2000@gmail.com
- 「___1em」后面的第一个单词:nmsmurugan2000@gmail.com
- 「___1em」后面的全部内容:nmsmurugan2000@gmail.com
-------------------------

内容的提问来源于stack exchange,提问作者satish kilari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:01:42