Con una expresión regular, sacamos lo que queremos...
Using perl Syntax Highlighting
$url = 'http://www.localhost.com/carpeta/index.php?id=1';
($host) = $url =~ m{http
://(.*?/)};
print $host;Coloreado en 0.004 segundos, usando
GeSHi 1.0.8.4
Actualización: La expresión regular funciona de esta manera:
* decimos que busque (
m//) en la variable
$url* usamos la presencia del literal '
http://' como referencia de posición para lo que sigue después
* hay un par de paréntesis de captura, cuyo contenido quedará en la variable
$host.
$host está entre paréntesis porque el resultado de la expr. reg. es una lista de valores: uno por cada par de paréntesis que pongamos. Solo hay uno, pero sigue siendo una lista de valores.
* dentro de los paréntesis, buscamos cualquier conjunto de caracteres (
.*) que estén antes (
?) de un '
/'.