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
相关产品推荐
相关产品推荐

