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

PHP字符串处理:如何从指定字符串中提取关键词与对应数值?

解决方案:提取PHP字符串中的关键词与对应数值

嘿,我来帮你搞定这个问题!针对你给出的字符串格式,我推荐两种实用的方法,你可以根据自己的习惯选择:

方法一:正则表达式匹配(直接提取)

这种方法适合快速匹配固定格式的字符串,直接提取关键词和数值:

<?php
$line = "'PHYSICAL':3.8,'ORGANIZATIONAL':4,'TECHNICAL':2.9";

// 用正则匹配所有键值对:匹配单引号内的关键词,以及后面的数字(支持小数)
preg_match_all("/'([A-Z]+)':([\d.]+)/", $line, $matches);

// 遍历匹配结果,动态生成目标变量
foreach ($matches[1] as $index => $key) {
    $wordNum = $index + 1;
    // 可变变量:创建$word1、$word1value这类变量
    ${"word{$wordNum}"} = $key;
    ${"word{$wordNum}value"} = (float)$matches[2][$index];
}

// 测试输出(可选)
echo $word1 . ' => ' . $word1value . PHP_EOL;
echo $word2 . ' => ' . $word2value . PHP_EOL;
echo $word3 . ' => ' . $word3value . PHP_EOL;
?>

方法二:转JSON解析(更通用稳妥)

如果你的字符串格式后续可能有小变动(比如关键词包含小写、特殊字符),把它转换成标准JSON再解析会更可靠:

<?php
$line = "'PHYSICAL':3.8,'ORGANIZATIONAL':4,'TECHNICAL':2.9";

// 将原字符串转换成合法JSON格式:替换单引号为双引号,前后加大括号
$jsonStr = '{' . str_replace("'", '"', $line) . '}';
// 解析为关联数组
$keyValuePairs = json_decode($jsonStr, true);

// 遍历数组生成目标变量
$index = 1;
foreach ($keyValuePairs as $key => $value) {
    ${"word{$index}"} = $key;
    ${"word{$index}value"} = $value;
    $index++;
}

// 测试输出(可选)
echo $word1 . ' => ' . $word1value . PHP_EOL;
echo $word2 . ' => ' . $word2value . PHP_EOL;
echo $word3 . ' => ' . $word3value . PHP_EOL;
?>

小建议

其实我更推荐直接使用关联数组(比如方法二中的$keyValuePairs)来存储这些数据,后续处理时循环遍历、按键名访问会比维护一堆单独的变量更灵活。但如果业务需求必须生成单个变量,上面两种方法都能完美实现你的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:13:20