PHP explode()不起作用

时间:2018-04-11 01:59:22

标签: php arrays explode

我是php的初学者,我在使用explode()函数时遇到了一些麻烦。

if (isset($_GET["url"])) {
        $url = $_GET["url"];
        $url = explode("/", $url);
        echo $url;
        $controller = $url[0];
        $action     = $url[1];
    } else {
        $controller = "pages";
        $action     = "home";
    }

我正在输入网址“localhost / pages / home”,而echo只是打印“数组”,好像它是空的。如果我在使用爆炸功能之前回显$ url,它就会显示为“pages / home”。提前谢谢。

3 个答案:

答案 0 :(得分:3)

explode()返回您作为数组()分隔的字符串,因此PHP的echo不支持数组的输出。您必须使用print_r()var_dump()函数来执行此操作。

if (isset($_GET["url"])) {
    $url = $_GET["url"];
    $url = explode("/", $url);
    print_r($url);
    $controller = $url[0];
    $action     = $url[1];
} else {
    $controller = "pages";
    $action     = "home";
}

答案 1 :(得分:2)

问题可能出在您的输入上。 $ GET [' url']不是您访问网址的方式,除非您进行设置。你可能想要:$ _SERVER [' PHP_SELF']:

var_dump($_GET["url"]); 
var_dump($_SERVER['HTTP_HOST']); 
var_dump($_SERVER['PHP_SELF']); 

请参阅PHP Server Variables

测试一下: $url = "https://stackoverflow.com/questions/49765341/php-explode-not-working"; $url = explode("/", $url); var_dump($url); die();

<强>输出

C:\wamp64\www\blink\vendor\bausch\yii2-purevision\views\report\index.php:75:
array (size=6)
  0 => string 'https:' (length=6)
  1 => string '' (length=0)
  2 => string 'stackoverflow.com' (length=17)
  3 => string 'questions' (length=9)
  4 => string '49765341' (length=8)
  5 => string 'php-explode-not-working' (length=23)

`

答案 2 :(得分:1)

explode() 表单一个数组,由拆分的组件组成。当您为其指定字符串localhost/pages/home时,它会形成三个组件:localhostpageshome

使用 echo() 输出内容会输出数组本身,只显示Array。如果您要输出数组的内容,则需要使用var_dump() print_r()

<?php

$url = 'localhost/pages/home';
$url = explode("/", $url);
var_dump($url);

返回:

array(3) {
  [0]=>
  string(9) "localhost"
  [1]=>
  string(5) "pages"
  [2]=>
  string(4) "home"
}

也可以看到 at 3v4l

如果您想获取单独的一行,则需要通过echo $url[index]的索引访问该行。例如,echo $url[2]会为您提供home