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

PHP中如何在多参数场景下提取指定单词前后的特定文本?

PHP中提取指定单词前后的文本(多参数场景)

嘿,我来帮你解决这个字符串提取的问题,这在日常PHP开发里挺常见的,给你整理了两个实用方案,直接看例子就能上手~

方案一:正则表达式(灵活适配复杂场景)

正则是处理这类字符串截取的首选,能精准匹配两个关键词之间的内容,还能应对各种边界情况。

示例1:提取「investor」之后、「harga」之前的文本

原文本:

abstrak investor evaluasi analisis faktor mempengaruhi nilai intrinsik harga saham

代码实现:

$str = "abstrak investor evaluasi analisis faktor mempengaruhi nilai intrinsik harga saham";
$startWord = "investor";
$endWord = "harga";

// 转义关键词避免正则特殊字符干扰
$safeStart = preg_quote($startWord, "/");
$safeEnd = preg_quote($endWord, "/");

// 正则匹配:取startWord后、endWord前的内容(非贪婪模式)
preg_match("/{$safeStart}\s*(.*?)\s*{$safeEnd}/", $str, $matches);

// 处理匹配结果,避免无匹配时报错
$result = isset($matches[1]) ? trim($matches[1]) : "";
echo $result; // 输出:evaluasi analisis faktor mempengaruhi nilai intrinsik

解释:\s*用来匹配单词前后的空白字符,.*?是非贪婪匹配,确保只取两个目标单词之间的内容,不会多匹配其他部分。

示例2:提取「tersedia」之后、「timbul」之前的文本

原文本:

informasi tersedia investor evaluasi analisis faktor mempengaruhi kondisi perusahaan dimasa investor memperkecil ...

代码实现:

$str = "informasi tersedia investor evaluasi analisis faktor mempengaruhi kondisi perusahaan dimasa investor memperkecil ...";
$startWord = "tersedia";
$endWord = "timbul";

$safeStart = preg_quote($startWord, "/");
$safeEnd = preg_quote($endWord, "/");

// 用正向预查处理endWord不存在的情况,此时取到字符串末尾
preg_match("/{$safeStart}\s*(.*?)\s*(?={$safeEnd}|$)/", $str, $matches);

$result = isset($matches[1]) ? trim($matches[1]) : "";
echo $result; 
// 因原文本无「timbul」,输出到末尾:investor evaluasi analisis faktor mempengaruhi kondisi perusahaan dimasa investor memperkecil ...

方案二:字符串分割(适合简单规整场景)

如果你的字符串结构很简单,没有特殊字符或重复关键词,用explode()分割也能快速实现:

示例1的分割实现:

$str = "abstrak investor evaluasi analisis faktor mempengaruhi nilai intrinsik harga saham";
$startWord = "investor";
$endWord = "harga";

// 先按startWord分割,取后半部分
$afterStart = explode($startWord, $str)[1] ?? "";
// 再按endWord分割,取前半部分
$result = explode($endWord, trim($afterStart))[0] ?? "";
echo trim($result); // 同样得到预期结果

注意:这个方法只匹配关键词第一次出现的位置,且要处理关键词不存在的情况,避免出现Undefined offset错误。

小提醒

  • 如果关键词包含正则特殊字符(比如.、*),一定要用preg_quote()转义,不然正则会失效;
  • 所有场景都要加边界判断,避免无匹配时出现错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:36:21