私はサイトを持っており、PHP で 1 つのページの URL を取得する必要があります。URLは何かかもしれないし、そうかもしれないし、そうかもwww.mydomain.com/thestringineed/
しれwww.mydomain.com/thestringineed?data=1
ないwww.mydomain.com/ss/thestringineed
それは常に最後の文字列ですが、その後は何も取得したくありませんか?
parse_url
あなたを助けるはずです。
<?php
$url = "http://www.mydomain.com/thestringineed/";
$parts = parse_url($url);
print_r($parts);
?>
parse_url 関数を使用して、戻り値のパス部分を調べます。このような:
$url='www.mydomain.com/thestringineed?data=1';
$components=parse_url($url);
//$mystring= end(explode('/',$components['path']));
// I realized after this answer had sat here for about 3 years that there was
//a mistake in the above line
// It would only give the last directory, so if there were extra directories in the path, it would fail. Here's the solution:
$mystring=str_replace( reset(explode('/',$components['path'])),'',$components['path']); //This is to remove the domain from the beginning of the path.
// In my testing, I found that if the scheme (http://, https://, ...) is present, the path does not include
//the domain. (it's available on it's own as ['host']) In that case it's just
// $mystring=$components['path']);
<?php
$url = 'http://username:password@hostname/path?arg=value#anchor';
print_r(parse_url($url));
echo parse_url($url, PHP_URL_PATH);
?>
そしてあなたの出力は
Array
(
[scheme] => http
[host] => hostname
[user] => username
[pass] => password
[path] => /path
[query] => arg=value
[fragment] => anchor
)
/path
以下を使用できます。
$strings = explode("/", $urlstring);
これにより、URL のすべての「/」が削除され、すべての単語を含む配列が返されます。
$strings[count($strings)-1]
これで、必要な文字列の値が得られましたが、「?data=1」が含まれている可能性があるため、それを削除する必要があります。
$strings2 = explode("?", $strings[count($strings)-1]);
$strings2[0]
URLから必要な文字列があります。
お役に立てれば!
使用$_SERVER['REQUEST_URI']
すると、現在のページの完全な URL が返されます。「/」で分割して、最後の配列インデックスを使用できます。最後の文字列になります
parse_url()
あなたが探している機能です。あなたが望む正確な部品は、を通じて受け取ることができますPHP_URL_PATH
$url = 'http://php.net/manual/en/function.parse-url.php';
echo parse_url($url, PHP_URL_PATH);