PHP,删除URL变量的一部分

时间:2013-06-23 00:05:07

标签: php

我有以下php变量

$currentUrl

这个php变量返回当前的url页面。例如:它返回:

http://example.com/test-category/page.html?_ore=norn&___frore=norian

我可以使用哪些PHP代码将使用此网址链接并删除“ .html ”之后的所有内容,并返回一个干净的网址链接,例如:

http://example.com/test-category/page.html

这将在新变量 $ clean_currentUrl

中返回

3 个答案:

答案 0 :(得分:13)

使用PHP的 parse_url()

<?php 
$url = "http://example.com/test-category/page.html?_ore=norn&___frore=norian";
$url = parse_url($url);

print_r($url);
/*
Array
(
    [scheme] => http
    [host] => example.com
    [path] => /test-category/page.html
    [query] => _ore=norn&___frore=norian
)
*/
?>

然后,您可以根据值构建所需的网址。

$clean_url = $url['scheme'].'://'.$url['host'].$url['path'];

答案 1 :(得分:1)

$parts = explode('?', $currentUrl);
$url = $parts[0];

答案 2 :(得分:1)

这样的事情:

<?php
$currentUrl = 'http://example.com/test-category/page.html?_ore=norn&___frore=norian';

preg_match('~http:\/\/.*\.html~', $currentUrl, $matches);
print_r($matches);

请参阅下面的amigura评论。要处理这种情况,请更改正则表达式:

<?php
$currentUrl = 'http://example.com/test-category/page.html?_ore=norn&___frore=norian';

preg_match('~(http:\/\/.*\..+)\?~', $currentUrl, $matches);
print_r($matches);