1

文字列をスライスする方法はありますか?この変数があるとしましょう

$output=Country=UNITED STATES (US) &City=Scottsdale, AZ &Latitude=33.686 &Longitude=-111.87

緯度と経度の値を個別の変数に取りたい方法でスライスしたいのですが、subtokは目的を果たしていません

4

7 に答える 7

8

これには正規表現は必要ありません。を使用して、最初に、次に でexplode()文字列を分割します。これを使用すると、名前を値にマッピングする素敵な小さな配列に効果的に解析できます。&=

于 2009-02-25T21:19:18.100 に答える
3
$output='Country=UNITED STATES (US) &City=Scottsdale, AZ &Latitude=33.686 &Longitude=-111.87';
parse_str($output, $array);
$latitude = $array['latitude'];

あなたもできる

parse_str($output);
echo $latitude;

入力文字列を信頼しない場合、(register_globals のように) 潜在的に危険な可能性がある変数をあちこちに作成していないため、配列を使用する方が良いと思います。

于 2009-02-25T21:23:42.737 に答える
2

URL エンコーディングはなくなっていますが、URL から来ているようです。

explode()またはを使用することをお勧めしpreg_split()ますが、 にも興味があるかもしれませんparse_str()

$output = "City=Scottsdale, AZ &Latitude=33.686 &Longitude=-111.87";
parse_str($output, $results);
$lat = $results['Latitude'];
$lon = $results['Longitude'];
于 2009-02-25T21:28:35.270 に答える
0

他の回答はすべて不十分です。これは毎回うまくいくはずです!

function slice($string, $start){
  $st = $string; $s = $start; $l = strlen($st); $a = func_get_args();
  $e = isset($a[2]) ? $a[2] : $l;
  $f = $e-$s;
  $p = $e < 0 && $s > 0 ? $l+$f : $f;
  return substr($st, $s, $p);
}
于 2013-06-14T02:22:49.760 に答える
0

コードで何を示しているのか正確にはわかりません。おそらくそれは単なるタイプミスです。「$output」は変数の名前ですか、それとも文字列の一部ですか?

それが変数の名前であり、文字列に引用符を付けるのを忘れたと仮定すると、いくつかのオプションがあります。


$sliced = explode('&', $output)

これにより、「Country=UNITED STATES(US)」、「City=Scottsdale, AZ」などの値を持つ配列が作成されます。


$sliced = preg_split('/[&=]/', $output);

これにより、「変数」とその値である要素が交互に配置された配列が作成されます: 「Country」、「UNITED STATES(US)」、「City」、「Scottsdale, AZ」など。

于 2009-02-25T21:19:44.433 に答える
0

次のことができます。

$output = 'Country=UNITED STATES (US) &City=Scottsdale, AZ &Latitude=33.686 &Longitude=-111.87';

$strs = explode('&', $output);
foreach ($strs as $str) {

   list($var, $val) = explode('=',$str);
   $$var = trim($val);

}

これにより、キーと値のペアの値に設定された $Latitude や $Longitude などの変数が得られます。

于 2009-02-25T21:21:55.723 に答える
-1

PHP ヘルプで正規表現について読むことをお勧めします。

于 2009-02-25T21:15:55.877 に答える