我是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”。提前谢谢。
答案 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']);
测试一下:
$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
时,它会形成三个组件:localhost
,pages
和home
。
使用 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
。