2
<?php
$URI_parts = explode('?', $_SERVER['REQUEST_URI'], 2);
echo 'http://' . $_SERVER['HTTP_HOST'] . $URI_parts[0];
?>

我已经读过explode 对资源的消耗相当大,我很好奇在这种情况下是否有一个最佳替代方案可以执行相同的任务。

上面的代码破坏了查询字符串后面的所有内容,?包括参数。我需要找到成本最低的方法来做到这一点。

4

2 回答 2

7

您应该使用parse_url (),如下所示:

$URI_parts = parse_url( $_SERVER['REQUEST_URI'] );
echo 'http://' . $_SERVER['SERVER_NAME'] . $URI_parts['path'];
于 2013-07-23T23:48:35.677 回答
4

你可以使用strstr($_SERVER['REQUEST_URI'], "?", TRUE). 或者,您可以使用strtok($_SERVER['REQUEST_URI'], "?").

满足后应该停止匹配。

顺便说一句,您不应该使用 PHP 函数,因为您听说 [需要引用] 它很慢。您应该使用适当的工具来完成这项工作,如果在发现性能问题、测量它并确定它是您使用该功能之后速度太慢,那么请考虑重构。

于 2013-07-23T23:46:33.033 回答