从 url 获取控制器和方法?
好的,我有一个来自 $_SERVER['REQUEST_URI']
的网址
,可以说它给了我们一个网址,
http://localhost/controller/method
我尝试过类似的方法
explode('/',$_SERVER['REQUEST_URI'])
,它给了我们
array
0 => string '' (length=0)
1 => string 'controller' (length=10)
2 => string 'method' (length=6)
获取控制器或方法的最佳方式是什么?或者删除数组中的 0 ? (第一个数组)?
一样
$controller = 'controller';
$method = 'method';
所以它就像上面的输入 。 也许关于清单?仍然没有使用 list() 的线索。
编辑这里是我到目前为止
$this->url = str_replace(config('foldertoscript'), NULL, $_SERVER['REQUEST_URI']);
$hello = explode('/',$this->url);var_dump($hello);
array_shift($hello);
list($controller,$method) = $hello;
var_dump($hello,$controller);
在课堂上
所做的事情感谢您的关注。
Adam Ramadhan
ok i have a url from $_SERVER['REQUEST_URI']
lets say it give us a url
http://localhost/controller/method
i have tried something like
explode('/',$_SERVER['REQUEST_URI'])
and it gave us like
array
0 => string '' (length=0)
1 => string 'controller' (length=10)
2 => string 'method' (length=6)
what is the best way to get the controller or method ? or removeing the 0 in the array ? ( first array ) ?
so it will be like
$controller = 'controller';
$method = 'method';
from above inputs.
maybe about list ? still no clue using list().
edit heres what ive done so far
$this->url = str_replace(config('foldertoscript'), NULL, $_SERVER['REQUEST_URI']);
$hello = explode('/',$this->url);var_dump($hello);
array_shift($hello);
list($controller,$method) = $hello;
var_dump($hello,$controller);
in a class
Thanks for looking in.
Adam Ramadhan
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
要删除数组的第一个元素,可以使用
array_shift()
。$_SERVER['REQUEST_URI']
为您提供不带“http://www.yoursite.com”的网址。您可以使用类似的东西
希望这会有所帮助。
To remove the first element of an array, you can use
array_shift()
.$_SERVER['REQUEST_URI']
gives you the url without the "http://www.yoursite.com".You can use something like this
Hope this helps.
使用 array_shift 删除第一个数组项。
http://php.net/manual/en/function.array-shift.php示例
:
Use array_shift to remove the first array item.
http://php.net/manual/en/function.array-shift.php
Example:
对于同样的问题,我使用 url_rewriting。
我有一条规则 ^([a-zA-Z0-0-_\/.]+)$ index.php?url=$1
(这不是我的代码的复制粘贴,但你明白了)
那么如果你说 $_URL = $_REQUEST["url"];
$指令 = 爆炸("/",$_URL);
你会得到你需要的,至于参数,你可以说 module/method/id/1/data/2
你必须照顾好你的参数,如果你
只使用 GET 方法进行导航,它就可以工作(因为它应该是用过的)。也使得事情变得更加安全,因为没有人可以
通过 get 或任何“智能”指令发送 SQL 注入。
For the same matter I use url_rewriting.
I have a rule that says ^([a-zA-Z0-0-_\/.]+)$ index.php?url=$1
(this is not a copy paste from my code, but you get the idea)
then if you say $_URL = $_REQUEST["url"];
$directive = explode("/",$_URL);
you will get what you need, as for the parameters you could say module/method/id/1/data/2
you have to take care of your parameters and it works if you use the GET method for
navigation only(as it should be used). Also makes the stuff much safer as no one can send SQL
injections via get or any "smart" directives.