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

PHP提取文本中Mark的所有关联短语问题求助

解决PHP提取所有Mark相关短语的问题

原代码只能提取第一条Mark相关内容,是因为只执行了一次strpos查找,没有循环处理所有匹配项。下面提供两种可行的解决方法:

方法一:正则表达式(推荐)

利用preg_match_all全局匹配所有符合条件的内容,适合处理这类有固定起始和结尾的文本提取场景:

<?php
$data = "
Peter, <br>
please check your email for a document I sent, thanks.<br>
Mark, <br>
please I need you to fix my Toyota Camry, thanks. <br>
Mark, <br>
please go and pick up the kids from school, thanks. <br>
Jane, <br>
please go the shop and some items for the house, thanks.
";

// 全局匹配所有从Mark,到thanks.的内容,s修饰符允许跨多行匹配
preg_match_all('/Mark,.*?thanks\./s', $data, $matches);

// 将匹配到的结果拼接成字符串
$result = implode(' ', $matches[0]);

// 可选:去除文本中的<br>标签
$result = str_replace('<br>', '', $result);

echo $result;
?>

正则说明

  • Mark,:匹配起始标识
  • .*?:非贪婪模式匹配中间任意内容,避免把多个Mark的消息合并成一条
  • thanks\.:匹配结尾标识(.是正则特殊字符,需转义)
  • s:修饰符让.可以匹配换行符,支持跨多行提取

方法二:循环查找(无正则)

如果不想使用正则,可以通过循环调用strpos,逐步定位所有匹配项:

<?php
$data = "
Peter, <br>
please check your email for a document I sent, thanks.<br>
Mark, <br>
please I need you to fix my Toyota Camry, thanks. <br>
Mark, <br>
please go and pick up the kids from school, thanks. <br>
Jane, <br>
please go the shop and some items for the house, thanks.
";

$start = 'Mark';
$end = 'thanks.';
$results = [];
$currentPos = 0;

// 循环查找所有Mark的位置
while (($startIndex = strpos($data, $start, $currentPos)) !== false) {
    // 找到当前Mark对应的结尾位置
    $endIndex = strpos($data, $end, $startIndex);
    if ($endIndex === false) break; // 找不到结尾则退出循环
    
    $endIndex += strlen($end);
    // 截取当前Mark的消息内容
    $result = substr($data, $startIndex, $endIndex - $startIndex);
    $results[] = $result;
    
    // 更新起始位置,避免重复匹配同一段内容
    $currentPos = $endIndex;
}

// 拼接所有结果
$finalResult = implode(' ', $results);
// 可选:去除<br>标签
$finalResult = str_replace('<br>', '', $finalResult);

echo $finalResult;
?>

输出结果

两种方法执行后都会得到期望的输出:
Mark, please I need you to fix my Toyota Camry, thanks. Mark, please go and pick up the kids from school, thanks.

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 16:05:26