从php字符串捕获特定字符串和值
我在php中有一个变量,其值如下:从php字符串捕获特定字符串和值,php,Php,我在php中有一个变量,其值如下: var $line="'PHYSICAL':3.8,'ORGANIZATIONAL':4,'TECHNICAL':2.9"; 从该行变量中,我希望提取php中的每个单词和值,因此基本上我希望如下所示: var $word1=PHYSICAL; var $word1value=3.8; var $word2=ORGANIZATIONAL; var $word2value=4; var $word3=TECHNICAL; var $word3value=2.9
var $line="'PHYSICAL':3.8,'ORGANIZATIONAL':4,'TECHNICAL':2.9";
从该行变量中,我希望提取php中的每个单词和值,因此基本上我希望如下所示:
var $word1=PHYSICAL;
var $word1value=3.8;
var $word2=ORGANIZATIONAL;
var $word2value=4;
var $word3=TECHNICAL;
var $word3value=2.9;
我想在不同的变量中分别捕获所有的单词和值,以便以后可以处理它们。有谁能在这方面帮助我吗。谢谢 最简单的方法是使用。您可以使用
PREG\u SPLIT\u DELIM\u CAPTURE
标志来启用在不使用周围引号的情况下捕获单词,并使用PREG\u SPLIT\u NO\u EMPTY
来删除此特定拆分模式产生的空值
$line="'PHYSICAL':3.8,'ORGANIZATIONAL':4,'TECHNICAL':2.9";
$array = preg_split("/'([^']+)':|,/", $line, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
print_r($array);
输出:
Array
(
[0] => PHYSICAL
[1] => 3.8
[2] => ORGANIZATIONAL
[3] => 4
[4] => TECHNICAL
[5] => 2.9
)
Array
(
[PHYSICAL] => 3.8
[ORGANIZATIONAL] => 4
[TECHNICAL] => 2.9
)
word1 = PHYSICAL
word1value = 3.8
word2 = ORGANIZATIONAL
word2value = 4
word3 = TECHNICAL
word3value = 2.9
然后可以对数组进行后处理(例如使用and)以生成可能更有用的内容:
$newarray = array_combine(array_filter($array, function ($i) { return !($i % 2); }, ARRAY_FILTER_USE_KEY),
array_filter($array, function ($i) { return $i % 2; }, ARRAY_FILTER_USE_KEY));
print_r($newarray);
输出:
Array
(
[0] => PHYSICAL
[1] => 3.8
[2] => ORGANIZATIONAL
[3] => 4
[4] => TECHNICAL
[5] => 2.9
)
Array
(
[PHYSICAL] => 3.8
[ORGANIZATIONAL] => 4
[TECHNICAL] => 2.9
)
word1 = PHYSICAL
word1value = 3.8
word2 = ORGANIZATIONAL
word2value = 4
word3 = TECHNICAL
word3value = 2.9
如果您确实需要单个变量,可以执行以下操作:
for ($i = 0; $i < count($array); $i += 2) {
${'word' . intdiv($i+2, 2)} = $array[$i];
${'word' . intdiv($i+2, 2) . 'value'} = $array[$i+1];
}
echo "word1 = $word1\n";
echo "word1value = $word1value\n";
echo "word2 = $word2\n";
echo "word2value = $word2value\n";
echo "word3 = $word3\n";
echo "word3value = $word3value\n";
你不能只用数组吗?嗨,非常感谢。这个很好用。谢谢你的帮助。太好了,很高兴能帮忙。我还(因为你接受答案时我正在打字)添加了一种方法来获取你在问题中描述的各个变量。