Exemple d'entrée utilisateur
http://domain.com/
http://domain.com/topic/
http://domain.com/topic/cars/
http://www.domain.com/topic/questions/
Je veux une fonction php pour rendre la sortie comme
domain.com
domain.com/topic/
domain.com/topic/cars/
www.domain.com/topic/questions/
Faites le moi savoir :)
Vous devez utiliser un tableau de termes "interdits" et utiliser strpos
et str_replace
pour les supprimer dynamiquement de l'URL transmise:
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
est désormais obsolète, il est donc préférable d'utiliser:
$url = preg_replace("(^https?://)", "", $url );
Cela supprime soit http://
ou https://
Je suggère d'utiliser les outils PHP vous a donné, jetez un œil à parse_url .
<?php
$url = 'http://username:password@hostname/path?arg=value#anchor';
print_r(parse_url($url));
echo parse_url($url, PHP_URL_PATH);
?>
L'exemple ci-dessus affichera:
Array
(
[scheme] => http
[Host] => hostname
[user] => username
[pass] => password
[path] => /path
[query] => arg=value
[fragment] => anchor
)
/path
Il semble que vous recherchiez au moins Host
+ path
(ajoutez d'autres au besoin, par exemple query
):
$parsed = parse_url('http://www.domain.com/topic/questions/');
echo $parsed['Host'], $parsed['path'];
> www.domain.com/topic/questions/
À votre santé
Vous pouvez supprimer https et http sur une seule ligne en utilisant ereg_replace:
$url = ereg_replace("(https?)://", "", $url);
Créez un tableau:
$ remove = array ("http: //", "https: //");
et remplacez par une chaîne vide:
str_replace ($ remove, "", $ url);
cela ressemblerait à quelque chose comme ceci:
function removeProtocol($url){
$remove = array("http://","https://");
return str_replace($remove,"",$url);
}
Str_replace retournera une chaîne si votre meule de foin (entrée) est une chaîne et que vous remplacez vos aiguilles dans le tableau par une chaîne. C'est sympa, donc vous pouvez éviter toutes les boucles supplémentaires.
Codage heureux!
Vous pouvez utiliser la fonctionnalité parse url de PHP. Cela fonctionnera pour tous les protocoles, même ftp: // ou https: //
Eiter obtenir le composant de protocole et le soustraire de l'URL, ou simplement concaténer les autres parties ensemble ...
<?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);
?>