在 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));
我有这个字符串
[ 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));