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

按首字母搜索外部TXT文件并更新PHP变量的技术实现问询

解决思路:提取特定开头的单词到变量

嘿,你之前用str_replace的思路不对哦——这个函数是用来替换文本的,不是用来提取匹配内容的。要实现“从txt文件里找出以‘s’/‘b’开头的单词,分别赋值给$starID和$MAG”的需求,我们得用正则表达式来匹配提取,具体步骤如下:

1. 读取文件内容(你这部分是对的)

先把txt文件的内容读进变量:

$pageBody = file_get_contents('./data.txt');

2. 用正则提取目标单词

我们用preg_match()函数来匹配符合规则的单词:

  • \b是单词边界,确保我们匹配的是完整单词的开头(不会把“abc s123”里的“s123”当成从中间开始的字符)
  • s\w+表示以s开头,后面跟着1个或多个字母/数字/下划线
  • 加上i修饰符可以忽略大小写(如果需要严格区分大小写,去掉i就行)

完整代码示例:

// 先初始化变量,避免未找到时变量未定义
$starID = '';
$MAG = '';

// 提取以's'开头的单词
if (preg_match('/\bs\w+/i', $pageBody, $sMatches)) {
    $starID = $sMatches[0];
    // 可选:打印调试信息
    echo "找到以s开头的单词:$starID\n";
}

// 提取以'b'开头的单词
if (preg_match('/\bb\w+/i', $pageBody, $bMatches)) {
    $MAG = $bMatches[0];
    // 可选:打印调试信息
    echo "找到以b开头的单词:$MAG\n";
}

补充说明

  • 如果你的txt文件里有多个以s/b开头的单词,想把它们都存起来,可以用preg_match_all(),结果会是一个二维数组,你可以循环处理。
  • 要是你之后还需要把这些变量写回文件(比如替换原来的旧值),那时候才需要用到str_replace,比如:
    // 假设你要把文件里的旧starID换成新提取的$starID
    $updatedContent = str_replace($oldStarIDValue, $starID, $pageBody);
    file_put_contents('./data.txt', $updatedContent);
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:35:02