使用php解析网址以删除或更改部分

时间:2013-11-20 17:13:38

标签: php parsing url url-parsing

让我们说你有两个网址。

http://testing.org/directory/index.php/arg1/arg2
Array ( [scheme] => http [host] => testing.org [path] => /directory/index.php/arg1/arg2 ) 

或类似的东西:

http://testing.org/index.php/arg1/arg2
Array ( [scheme] => http [host] => testing.org [path] => /index.php/arg1/arg2 ) 

我知道你可以用parse_array()打破网址。当我这样做时,路径就是' testing.org'之后的一切。在第一个示例中,数组中的路径变量1是'目录'但在第二个例子中,路径变量1是' index.php'。

我想弄清楚要做两件事。首先删除index.php之后的所有内容,但我一直在摸索球。另外,我如何删除' /目录/'从第一个网址?

但我也想学习如何替换路径的一部分。

1 个答案:

答案 0 :(得分:1)

您可以使用parse_url()和正则表达式的组合来完成此任务。下面的正则表达式将删除URL路径中index.php之后的所有内容。

$parts = parse_url($url);
$scriptname = preg_replace('#(index\.php)/.*#', '$1', $parts['path']);
$result = $parts['scheme'].'://'. $parts['host'] . $scriptname;

对于给出问题的两个URL,输出如下:

http://testing.org/directory/index.php
http://testing.org/index.php

Demo.