ユーザー入力の例
http://domain.com/
http://domain.com/topic/
http://domain.com/topic/cars/
http://www.domain.com/topic/questions/
次のような出力を作成するphp関数が必要です
domain.com
domain.com/topic/
domain.com/topic/cars/
www.domain.com/topic/questions/
お知らせ下さい :)
「許可されていない」用語の配列を使用し、 strpos
および str_replace
渡されたURLから動的に削除するには:
function remove_http($url) {
$disallowed = array('http://', 'https://');
foreach($disallowed as $d) {
if(strpos($url, $d) === 0) {
return str_replace($d, '', $url);
}
}
return $url;
}
ereg_replace
は非推奨になったため、使用することをお勧めします。
$url = preg_replace("(^https?://)", "", $url );
これにより、いずれかのhttp://
またはhttps://
ツールを使用することをお勧めしますPHPがあなたに与えた、 parse_url を見てください。
<?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
少なくともHost
+ path
(必要に応じて他を追加、たとえばquery
)の後を追いかけているようです:
$parsed = parse_url('http://www.domain.com/topic/questions/');
echo $parsed['Host'], $parsed['path'];
> www.domain.com/topic/questions/
乾杯
Ereg_replaceを使用して、httpsとhttpの両方を1行で削除できます。
$url = ereg_replace("(https?)://", "", $url);
配列を作成します。
$ remove = array( "http://"、 "https://");
そして空の文字列で置き換えます:
str_replace($ remove、 ""、$ url);
次のようになります。
function removeProtocol($url){
$remove = array("http://","https://");
return str_replace($remove,"",$url);
}
Haystack(入力)が文字列であり、配列内の針を文字列で置き換えた場合、str_replaceは文字列を返します。すてきなので、余分なループをすべて回避できます。
ハッピーコーディング!
PHPの解析URL機能を使用できます。これは、ftp://やhttps://を含むすべてのプロトコルで機能します。
Eiterは、プロトコルコンポーネントを取得してUrlから差し引くか、他のパーツを連結して戻します...
<?php
// user input
$url = 'http://www.example.com/category/website/wordpress/wordpress-security/';
$url0 = 'http://www.example.com/';
$url1 = 'http://www.example.com/category/';
$url2 = 'http://www.example.com/category/website/';
$url3 = 'http://www.example.com/category/website/wordpress/';
// print_r(parse_url($url));
// echo parse_url($url, PHP_URL_PATH);
$removeprotocols = array('http://', 'https://');
echo '<br>' . str_replace($removeprotocols,"",$url0);
echo '<br>' . str_replace($removeprotocols,"",$url1);
echo '<br>' . str_replace($removeprotocols,"",$url2);
echo '<br>' . str_replace($removeprotocols,"",$url3);
?>