在 php 中重写一个字符串,并在其中添加信息

Rewrite a string in php with adding information inside

我有这个字符串

[ 1, 6], [ 2, 5]

我只需要将其重写为

['lat' => 1, 'long' => 6],['lat' => 2, 'long' => 5]

所以我的逻辑应该是在每个第一个数字之前添加 'lat' => 并且在每个第二个数字之前 'long' => 但我不确定。 我正在使用 php 但如果我有逻辑代码,那么使用任何其他语言都不是问题。那就是你

正则表达式的替代方法是普通字符串函数:

<?php
$input = '[ 1, 6], [ 2, 5]';
list($latA, $longA, $latB, $longB) = sscanf($input, '[ %d, %d], [ %d, %d]');
$output = sprintf(
    "['lat' => %d, 'long' => %d],['lat' => %d, 'long' => %d]", 
    $latA, $longA, $latB, $longB
);
var_dump($output);

输出为:

string(51) "['lat' => 1, 'long' => 6],['lat' => 2, 'long' => 5]"

但是我怀疑这个真的是你要找的。这两种格式看起来更像是它们实际上并不是字符串,而是一个包含两个数值数组的数组,每个数组有两个元素作为输入,一个关联数组作为输出。如果是这样,那么答案会简单得多:-)

<?php
function transform($str) {
    $str = str_replace('], ', '@', $str);
    $str = str_replace('[', "['lat' =>", $str);
    $str = str_replace(',', ", 'long' =>", $str);
    $str = str_replace('@', '],', $str);

    return $str;
}
$in  = '[ 1, 6], [ 2, 5]';
$out = "['lat' => 1, 'long' => 6],['lat' => 2, 'long' => 5]";
print assert($out == transform($in));