• Publicidad

Recortar texto

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Recortar texto

Notapor joss » 2007-10-27 16:13 @717

Hola a todos!.

Me gustaría saber como puedo recortar texto.

Código: Seleccionar todo
http://www.localhost.com/carpeta/index.php?id=1


Ese ejemplo es una url y es lo que quiero aprender a recortar, la cosa es que me gustaría guardar en una variable el valor de
Código: Seleccionar todo
www.localhost.com/
en este caso.
joss
Perlero nuevo
Perlero nuevo
 
Mensajes: 36
Registrado: 2007-09-10 13:04 @586

Publicidad

Notapor explorer » 2007-10-27 16:31 @729

Con una expresión regular, sacamos lo que queremos...
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$url = 'http://www.localhost.com/carpeta/index.php?id=1';

($host) = $url =~ m{http://(.*?/)};

print $host;
Coloreado en 0.002 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 '/'.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

use URI;

Notapor Jenda » 2007-10-29 06:53 @328

En ese caso podría ser mejor usar un módulo:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use URI;

my $uri = URI->new('http://www.localhost.com/carpeta/index.php?id=1');
print $uri->host();
# o quizá
print $uri->host_port();
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Jenda
Perlero nuevo
Perlero nuevo
 
Mensajes: 132
Registrado: 2007-10-29 06:31 @313
Ubicación: Praga, Republica Checa

Notapor explorer » 2007-10-29 08:23 @391

Bienvenido a los foros de Perl en Español, Jenda.

Lo único que te faltaría en tu ejemplo con el módulo URI es el '/' final, que necesita joss.

:-D
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor Jenda » 2007-10-29 11:59 @541

Gracias :-) No sé cuánto tiempo voy a poder invertir en ese foro, pero espero poder ayudar a los novatos mejorando al mismo tiempo mi español :-)

Pues, es fácil añadir el '/' si de verdad lo necesita.

Código: Seleccionar todo
print $uri->host() . '/';
Jenda
Perlero nuevo
Perlero nuevo
 
Mensajes: 132
Registrado: 2007-10-29 06:31 @313
Ubicación: Praga, Republica Checa


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 13 invitados