En iyi şekilde dönüştürmek metin '&'

2 Cevap php

Ben bu metni var

? "Foo = bar & filanca = barfoo"

değişkenlere bu metni dönüştürmek için en iyi yolu nedir? Bu gibi:

<?php
echo $q['foo']; //bar
echo $q['foobar']; //barfoo
?>

Teşekkürler.

2 Cevap

bkz http://docs.php.net/parse_str ve http://docs.php.net/parse_url

$s = "?foo=bar&foobar=barfoo";
parse_str(parse_url($s, PHP_URL_QUERY), $q);
var_dump($q);

baskılar

array(2) {
  ["foo"]=>
  string(3) "bar"
  ["foobar"]=>
  string(6) "barfoo"
}

edit: If you know the string always has the form ?x=y... you might want to skip parse_url() and use substr() instead.
edit2: Keep in mind that the behavior of parse_str() depends on the value of arg_separator.input. Should you set it (for whatever reason) to something like '!' parse_string() will return NULL for your input string. e.g.

ini_set('arg_separator.input', '!');
$s = "foo=bar&foobar=barfoo";
var_dump(parse_str($s));

baskılar NULL. But ...that would be a rather odd setting.

Peki size url kaynağından almak eğer ['bar'] $ _GET ['foo'] otomatik olması ve $ _GET bu yüzden bu bir url ama sadece bir metin dizesi ise, bunu yapabilirsiniz:

$string = "?foo=bar&foobar=barfoo";
$string = str_replace('?', '', $string);
$params = explode('&', $string);

foreach($params as $key=>$value)
{
    $data = explode('=', $value);
    $_GET[$data[0]] = $data[1];
}

Ve vars tüm $ _GET dizi olacak.