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

使用PHP及正则表达式生成字符串块并提取长字符串指定内容

解决方案

1. 从指定长字符串提取目标内容

先看你提供的原始长字符串:

[Maria, C.] albS HmbF, Ctr Nat Haward Management, D-3020 Innsbruck, Austria; [Marial, C.; Evans, K. F.; Eberhardt, E.; Loew, S.] Swiss Fed Inst Technol, Swiss Fed Inst Technol, Zurich, Switzerland; [Eberyardt, E.] Univ British Columbia, Vancouver, BC X6Z 1M3, Canada

我们可以用PHP结合正则表达式精准提取Maria, C.和对应的机构地址。核心思路是匹配[作者] 机构;的结构,再筛选出目标作者的条目:

$longStr = '[Maria, C.] albS HmbF, Ctr Nat Haward Management, D-3020 Innsbruck, Austria; [Marial, C.; Evans, K. F.; Eberhardt, E.; Loew, S.] Swiss Fed Inst Technol, Swiss Fed Inst Technol, Zurich, Switzerland; [Eberyardt, E.] Univ British Columbia, Vancouver, BC X6Z 1M3, Canada';

// 匹配每个[作者] 机构的条目
$pattern = '/\[([^\]]+)\]\s*([^;]+);/';
preg_match_all($pattern, $longStr, $matches);

// 遍历结果找到目标作者的条目
$targetAuthor = 'Maria, C.';
$result = [];
foreach ($matches[1] as $index => $author) {
    if ($author === $targetAuthor) {
        $result['author'] = $author;
        $result['affiliation'] = trim($matches[2][$index]);
        break;
    }
}

// 输出结果
echo "提取的作者:{$result['author']}\n";
echo "提取的机构地址:{$result['affiliation']}\n";

运行这段代码后,就能得到你需要的两个目标字符串:Maria, C.和albS HmbF, Ctr Nat Haward Management, D-3020 Innsbruck, Austria。

2. 使用PHP+正则生成两个不同的字符串块

这里我们生成两个格式不同、内容唯一的字符串——一个是字母数字混合的随机字符串,另一个是包含特殊字符的结构化字符串,用正则约束格式,同时确保两个字符串不重复:

// 生成第一个字符串:8位字母数字混合(大小写)
function generateFirstString() {
    $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $str = '';
    for ($i = 0; $i < 8; $i++) {
        $str .= $chars[rand(0, strlen($chars) - 1)];
    }
    // 用正则验证格式(确保是8位字母数字)
    if (preg_match('/^[a-zA-Z0-9]{8}$/', $str)) {
        return $str;
    }
    return generateFirstString();
}

// 生成第二个字符串:10位,包含字母、数字、下划线和连字符,且开头为字母
function generateSecondString() {
    $chars = '0123456789abcdefghijklmnopqrstuvwxyz_-';
    $str = chr(rand(97, 122)); // 开头小写字母
    for ($i = 1; $i < 10; $i++) {
        $str .= $chars[rand(0, strlen($chars) - 1)];
    }
    // 用正则验证格式
    if (preg_match('/^[a-z][a-z0-9_-]{9}$/', $str)) {
        return $str;
    }
    return generateSecondString();
}

// 生成两个不同的字符串
$str1 = generateFirstString();
do {
    $str2 = generateSecondString();
} while ($str1 === $str2);

// 输出结果
echo "生成的第一个字符串:{$str1}\n";
echo "生成的第二个字符串:{$str2}\n";

这段代码会生成两个完全不同的字符串,且各自符合预设格式要求,正则在这里起到了验证生成结果是否合规的作用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:42:15