【问题标题】:PHP explode() not workingPHPexplode()不起作用
【发布时间】:2018-04-11 01:59:22
【问题描述】:

我是 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";
    }

我正在输入 url “localhost/pages/home”,而 echo 只是打印“Array”,就好像它是空的一样。如果我在使用explode 函数之前回显$url,它会显示为“pages/home”。提前致谢。

【问题讨论】:

  • $_GET["url"] 将是查询字符串参数的值,例如http://localhost?url=foo/bar。由于您的localhost/pages/home 网址中没有url=,因此未设置$_GET["url"],因此您始终会得到else

标签: php arrays explode


【解决方案1】:

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";
}

【讨论】:

  • 不是print() 用于数组,只是print_r() 或更受IMO 青睐,因为它显示了行号和数据类型,var_dump()
【解决方案2】:

问题可能与您的输入有关。 $GET['url'] 不是您访问 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)

`

【讨论】:

    【解决方案3】:

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-16
      • 2016-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多