Скажем, у меня есть URL с чем-то вроде этого: http://website.com/website/webpage/?message=newexpense
У меня есть следующий код, чтобы попытаться получить URL-адрес перед вопросительным знаком:
$post_url = $actual_link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$link_before_question_mark = explode('?', $actual_link);
$add_income_url = $link_before_question_mark[0];
В этом примере я бы получил следующий URL: http://website.com/website/webpage/
Я хотел бы удалить часть веб-страницы, чтобы URL-адрес: http://website.com/website/
Как я могу это сделать?
Вы можете сделать подобный трюк, используя explode
. Затем поместите части, которые вам не нужны, и снова implode
URL. Если вы уверены, что часть после '?' никогда не содержит '/', вы можете заменить свой код на этот. Если вы не уверены, вы должны сначала удалить часть после '/', а затем запустить этот код, чтобы удалить последнюю часть пути.
<?php
$url = 'http://website.com/website/webpage/?message=newexpense';
$parts = explode('/', $url);
// Remove the last part from the array
$lastpart = array_pop($parts);
// If the last part is empty, or the last part starts with a '?'
// this means there was a '/' at the end of the url, so we
// need to pop another part.
if ($lastpart == '' or substr($lastpart, 0, 1) == '?')
array_pop($parts);
$url = implode('/', $parts);
var_dump($url);
Используйте parse_url Таким образом, у вас есть все компоненты.
$url = 'http://website.com/website/webpage/?message=newexpense';
$pUrl = parse_url( $url);
echo $pUrl['scheme'] . '://' . $pUrl['host'] . $pUrl['path'];
Я бы, вероятно, использовал dirname
; он специально предназначен для удаления последнего материала после "/"...
$url = "http://website.com/website/webpage/?message=newexpense";
echo dirname(dirname($url))."/"; // "http://website.com/website/"
(Как сказано в документации, "dirname() наивно работает на входной строке и не знает о фактической файловой системе...", поэтому вполне безопасно использовать для этой цели.)
Попробуйте взорваться
<?php
$actual_link = "http://website.com/website/webpage/?message=newexpense]";
$link_before_question_mark = explode('?', $actual_link);
$add_income_url = $link_before_question_mark[0];
$split=explode('/', $add_income_url);
echo $split[0]."//".$split[2]."/".$split[3]."/";
?>
Еще лучше...
<?php
$actual_link = "http://website.com/website/webpage/?message=newexpense]";
$split=explode('/', $actual_link);
echo $split[0]."//".$split[2]."/".$split[3]."/";
?>