Foros del Web » Programando para Internet » PHP »

acortar links

Estas en el tema de acortar links en el foro de PHP en Foros del Web. Hola, quería saber si alguien sabe de alguna función (pero código entero no nada de google o de tuiter), para acortar links, por ejemplo: http://www.forosdelweb.com/newthr ...
  #1 (permalink)  
Antiguo 11/05/2011, 16:39
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años
Puntos: 15
acortar links

Hola, quería saber si alguien sabe de alguna función (pero código entero no nada de google o de tuiter), para acortar links, por ejemplo:


http://www.forosdelweb.com/newthr...

y que me vaya al link:

http://www.forosdelweb.com/newthread...newthread&f=18

por ejemplo

vaya, ahora edito mi mensaje pq en el 2º link forosdelweb hace EXACTAMENTE lo que pido ;), pero... cómo?
  #2 (permalink)  
Antiguo 11/05/2011, 16:44
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: acortar links

No es mucha ciencia, solo usa substr() para obtener un segmento de la cadena del enlace.

Así usas dicho segmento como texto del enlace, y el enlace completo como href.

__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 11/05/2011, 16:48
Avatar de lair  
Fecha de Ingreso: enero-2009
Ubicación: header('Location: Morelia");
Mensajes: 1.052
Antigüedad: 15 años, 4 meses
Puntos: 46
Respuesta: acortar links

Hola.

Para eso necesitas usar un .htaccess y el modulo rewrite de apache
te dejo estos links
http://www.emenia.es/como-crear-urls...-con-htaccess/
http://craftyman.net/urls-amigables-con-htaccess-y-php/

Suerte. puedes buscar mas informacion en google como URLS AMIGABLES

Y otra cosa, con esto te pueden ayudar mejor en el foro de apache
  #4 (permalink)  
Antiguo 12/05/2011, 02:41
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años
Puntos: 15
Respuesta: acortar links

gracias a ambos pero no es exactamente lo que buscaba. Lo q que quiero es EXACTAMENTE EXACTAMENTE lo que me ha hecho foros del web con el 2º link que he pegado.

Es decir, tengo texto y uno o más links en el mismo párrafo. Uno de los links sobrepasa los, pongamos, 25 caracteres.

Quiero que me aparezca el link cortado por en medio o por el final (me da igual), con unos puntos suspensivos, y que ocupe 25 caracteres más los "..."
  #5 (permalink)  
Antiguo 12/05/2011, 06:17
Avatar de AndresTorres  
Fecha de Ingreso: abril-2011
Ubicación: Capital Federal, ARG
Mensajes: 49
Antigüedad: 13 años
Puntos: 13
Respuesta: acortar links

Cita:
Iniciado por humanista Ver Mensaje
gracias a ambos pero no es exactamente lo que buscaba. Lo q que quiero es EXACTAMENTE EXACTAMENTE lo que me ha hecho foros del web con el 2º link que he pegado.

Es decir, tengo texto y uno o más links en el mismo párrafo. Uno de los links sobrepasa los, pongamos, 25 caracteres.

Quiero que me aparezca el link cortado por en medio o por el final (me da igual), con unos puntos suspensivos, y que ocupe 25 caracteres más los "..."
Código PHP:
<?php

function enlace$url ) {

    if( 
strlen$url ) >= 60 ) {
        
$inicio substr$url 40 );
        
$fin substr$url , -15 );
        
$enlace '<a href="'.$url.'">'.$inicio.'...'.$fin.'</a>';
    } else {
        
$enlace '<a href="'.$url.'">'.$url.'</a>';
    }
    return 
$enlace;

}

echo 
enlace'http://www.google.com.ar' );
echo 
'<br/';
echo 
enlace'http://www.forosdelweb.com/f18/problema-con-carritos-para-usuarios-no-registrados-tienda-virtual-911321/' );
  #6 (permalink)  
Antiguo 12/05/2011, 08:38
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: acortar links

¡Genial!

Y alguien hizo exactamente lo que se pedía, ¿donde quedó el aprendizaje?

Penosamente el tema volvió inútil a un usuario mas, gracias por hacer la tarea de los demás.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 12/05/2011, 08:41
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: acortar links

tranquilo pateketrueke, créeme que hay gente que aprende mucho mas fácilmente así.

(no todos pero si algunos)

en mi caso aprendí ActionScript antes de entrar a la universidad solo copiando y pegando códigos y tratando de modificarlos a mis necesidades y entenderlos.

La mayoría de lo que se actualmente de HTML, AS, JS, .NET, VB, CSS, PHP, MySQL y SQL no lo aprendí en la universidad ni leyendo manuales, si no mirando códigos hechos.

incluso AJAX, lo aprendí completamente robando códigos XD
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #8 (permalink)  
Antiguo 12/05/2011, 08:47
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: acortar links

Cita:
Iniciado por humanista Ver Mensaje
[...] Lo q que quiero es EXACTAMENTE EXACTAMENTE [..]
Entiendo, pero honestamente me irritan comentarios de este tipo.

Como si en el foro hubiera montones de monos que no entienden el problema, pues aquí el que no entiende la solución era otro.

Y el punto es que si dejamos a los usuarios ponerse a ese nivel, ¿de que sirve entonces el foro?

Es como bastantes temas que he visto, donde los usuarios solo listan una lista de requerimientos. Y los usuarios que no responden como se pide exactamente masticado comienzan los malos comentarios, que si no vas a ayudar no te metas al tema, etc.

Pan con lo mismo.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 12/05/2011, 08:54
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: acortar links

bueno, en ese sentido te encuentro toda la razón, el foro pierde su sentido, los usuarios se mal acostumbran y creen que estamos para servirles, incluso se creen en su derecho de enojarse y reclamar.

Creo que hay una cosa que dejar en claro y es que en este foro lo que se hace es:

Orientar gratuitamente al usuario como un favor y no como una obligación.

creo que es una buena idea recalcarselo a todos los usuarios (sobretodo si son nuevos), yo por mi parte lo pondré en mi firma, a mas de uno le caerá XD
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #10 (permalink)  
Antiguo 12/05/2011, 10:54
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años
Puntos: 15
Respuesta: acortar links

A ver chicos, que no cunda el pánico. En primer lugar gracias por la ayuda, a todos. Lo de EXACTAMENTE EXACTAMENTE me refería precisamente a eso, a q lo que necesito es lo mismo que hace foros del web.

Lo he intentado explicar con la frase "Es decir, tengo texto y uno o más links en el mismo párrafo.".

El tema es que de un texto con texto y con links mezclados, me coja los links y me lo fraccione como ya habéis indicado, con "..."

Sé usar el substr y tb tengo el código de detectar links y ponérmelos como tales con expresiones regulares. El tema es que la mezcla de ambos no acierto a conseguirla.

Y no, no me creo con derecho a que me sirva nadie, faltaría más. Sóis libres de ayudarme, yo siempre agradeceré y agradezco toda ayuda de cualquiera que desee invertir su tiempo en ayudar.

Y sí, yo soy de aquellos usuarios que aprende más fácilmente el código hecho y aprovecho partes de él para retocarlo y ajustarlo a mí gusto pero hay veces que uno tiene sus limitaciones.

Y precisamente la web que estoy construyendo con la ayuda de este tipo de usuarios desinteresados de foros del web -como vosotros- va por ahí, genera conocimiento público y de valor para todo aquel que quiera acceder a él.

Gracias.
  #11 (permalink)  
Antiguo 15/05/2011, 11:54
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años
Puntos: 15
Respuesta: acortar links

Hola, el caso es que sigo necesitando ayuda.

La función que tengo es esta:


Código PHP:
Ver original
  1. function hacer_links($texto)
  2. {
  3.     $texto = eregi_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_\+.~#?&//=]+)','<a class=ver12subazuosc href="\\1" target="_blank">\\1</a>', $texto);
  4.  
  5.     $texto = eregi_replace('([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_\+.~#?&//=]+)','\\1<a class=ver12subazuosc href="http://\\2" target="_blank">\\2</a>', $texto);
  6.  
  7.     $texto = eregi_replace('([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3})','<a class=ver12subazuosc href="mailto:\\1">\\1</a>', $texto);
  8.  
  9.     return $texto;
  10. }


pero... no me acortar los link, simplemente me los construye. Faltaría saber como acortarlos y poner en medio los 3 puntos suspensivos "...".

gracias
  #12 (permalink)  
Antiguo 15/05/2011, 13:07
Avatar de ZoroRoronoa  
Fecha de Ingreso: marzo-2011
Ubicación: California, USA
Mensajes: 824
Antigüedad: 13 años, 1 mes
Puntos: 116
Respuesta: acortar links

Y un foro no serviría, si hay "más monos", que no responden licitamente a la pregunta.
Y postean cosas que no les gustan o comentarios hacia la conducta de otros.

Hay que ahorrarnos esos post, y si crees que algo esta mal, solo guardatelo o enviale MP o inclusive dale karma y un comentario por ahi de su razón.

Pero hay que responder acuerdo al tema.

*Yo tambien he metido la pata, por escribir este post, sin ninguna respuesta hacia el tema inicial
__________________
Programador jQuery & PHP

Última edición por ZoroRoronoa; 15/05/2011 a las 13:24
  #13 (permalink)  
Antiguo 18/05/2011, 05:11
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años
Puntos: 15
Respuesta: acortar links

lo siento pero sigo necesitando ayuda, cómo puedo acortar un link situado en un párrafo con texto y links mezclados?
  #14 (permalink)  
Antiguo 18/05/2011, 08:43
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: acortar links

bueno, un enlace escrito así:

<a href="http;//www.google.com">google</a>

se ve así:

google

por lo tanto todo lo que tienes que hacer es reescribir la parte interna del tag, dejando el tag tal cual es, puedes usar una función como strlen() para conocer el tamaño

por ejemplo, si una cadena tiene mas de 20 carateres (strlen($cadena)>20), podrias tomas los primeros 10 (substr($cadena,0,10)) y los úlimos 10 (substr(-10)) y agregar los 3 puntos al medio (."...".)

o sea algo asi:

if(strlen($cadena)>20)
$texto=substr($cadena,0,10)."...".substr(-10);

como verás aunque la idea parezca complicada es muy simple, solo necesitas ingenio XD
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #15 (permalink)  
Antiguo 19/05/2011, 08:00
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años
Puntos: 15
Respuesta: acortar links

gracias stramin, cierto es, pero el caso es que necesito las expresiones regulares para transformar los links de un texto formado por links y texto normal. El caso es que en las expresiones regulares habría que hacer lo que tú me dices pero no sé cómo.

Sería algo así como:

Código PHP:
<class=ver12subazuosc href="\\1" target="_blank">1</a
aplicar a ese \\1 lo del substr pero lo he intentado y nada
  #16 (permalink)  
Antiguo 19/05/2011, 08:17
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: acortar links

No es tan sencillo, debes estudiar no solo las expresiones regulares sino como tratarlas.

Pues hay diversas formas de conseguir lo que necesitas.

Revisa el siguiente enlace:
http://www.forosdelweb.com/f18/aport...s-pcre-646110/
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #17 (permalink)  
Antiguo 19/05/2011, 09:56
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 15 años, 8 meses
Puntos: 87
Respuesta: acortar links

podrías usar preg_replace_callback() para lo que necesitas, dale una revisada.

Saludos
  #18 (permalink)  
Antiguo 20/05/2011, 12:58
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años
Puntos: 15
Respuesta: acortar links

pues lo he mirado y remirado y no sé ni por dónde empezar...
  #19 (permalink)  
Antiguo 20/05/2011, 13:47
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 15 años, 8 meses
Puntos: 87
Respuesta: acortar links

mm.. creo que no revisaste bien, mira.. ya tienes la función para acortar:

Código PHP:
Ver original
  1. function enlace( $url ) {
  2.     if( strlen( $url[0] ) >= 60 ) {
  3.         $inicio = substr( $url[0] , 0 , 40 );
  4.         $fin = substr( $url[0] , -15 );
  5.         $enlace = '<a href="'.$url[0].'">'.$inicio.'...'.$fin.'</a>';
  6.     } else {
  7.         $enlace = '<a href="'.$url[0].'">'.$url[0].'</a>';
  8.     }
  9.     return $enlace;
  10.  
  11. }

utilices la función que te indique añadiendole unos separadores, ya que es PCRE (que esta muy bien explicado en el enlace de pateketrueke):

Código PHP:
Ver original
  1. $texto = preg_replace_callback('#(((f|ht){1}tp://)[-a-zA-Z0-9@:%_\+.~\#?&//=]+)#','enlace', $texto);

con eso debería funcionar.

Saludos.
  #20 (permalink)  
Antiguo 23/05/2011, 12:54
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años
Puntos: 15
Respuesta: acortar links

me va de cine quike88 !!!, muchas gracias
  #21 (permalink)  
Antiguo 24/05/2011, 12:28
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años
Puntos: 15
Respuesta: acortar links

lo único una cosa, si en lugar de poner en un link http:// delante de las www, ponemos sólo las www, no funciona. cómo se podría arreglar esto?
  #22 (permalink)  
Antiguo 25/05/2011, 08:12
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 15 años, 8 meses
Puntos: 87
Respuesta: acortar links

Revisaste el link que te dejo pateketrueke? ahí explica que podrías usar para solucionar eso.

Saludos
  #23 (permalink)  
Antiguo 25/05/2011, 12:55
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años
Puntos: 15
Respuesta: acortar links

quike88 créeme que lo miré y lo he vuelto a mirar y no encuentro la solución
  #24 (permalink)  
Antiguo 25/05/2011, 13:31
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 15 años, 8 meses
Puntos: 87
Respuesta: acortar links

viendo la función que tenias, si funciona si el link no tiene http:// es la 2da expresión regular

Código PHP:
Ver original
  1. function hacer_links($texto)
  2. {
  3.     $texto = eregi_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_\+.~#?&//=]+)','<a class=ver12subazuosc href="\\1" target="_blank">\\1</a>', $texto);
  4.  
  5.     $texto = eregi_replace('([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_\+.~#?&//=]+)','\\1<a class=ver12subazuosc href="http://\\2" target="_blank">\\2</a>', $texto);
  6.  
  7.     $texto = eregi_replace('([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3})','<a class=ver12subazuosc href="mailto:\\1">\\1</a>', $texto);
  8.  
  9.     return $texto;
  10. }
  #25 (permalink)  
Antiguo 25/05/2011, 14:05
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años
Puntos: 15
Respuesta: acortar links

sí, esto intenté y nada:


Código PHP:
Ver original
  1. $texto= preg_replace_callback('#([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_\+.~#?&//=]+)#','enlace', $texto);
  #26 (permalink)  
Antiguo 25/05/2011, 14:09
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 15 años, 8 meses
Puntos: 87
Respuesta: acortar links

te falto escapar la almohadilla dentro de la expresión. Si usas como separadores un símbolo que se encuentre en la expresión regular, debes usar \

Un saludo.
  #27 (permalink)  
Antiguo 25/05/2011, 14:23
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años
Puntos: 15
Respuesta: acortar links

eyy, ahora con esto me va mejor:


Código PHP:
Ver original
  1. $texto= preg_replace_callback('#([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_\+.~\#?&//=]+)#','enlace', $texto);

pero... en el link coge un espacio antes, es decir:

(espacio)w w w . g o o g l e . e s

todo eso es el link, con el espacio a la izquierda, es por ello que no me coge bien el enlace con ese espacio a la izquierda, me da error al pinchar en él.

Última edición por humanista; 26/05/2011 a las 01:17
  #28 (permalink)  
Antiguo 26/05/2011, 16:18
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años
Puntos: 15
Respuesta: acortar links

venga una última ayuda que ya casi está la función para que coja bien los links sin http://
  #29 (permalink)  
Antiguo 27/05/2011, 09:59
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: acortar links

Cita:
Iniciado por stramin Ver Mensaje
Cita:
Iniciado por pateketrueke Ver Mensaje
¡Genial!
Y alguien hizo exactamente lo que se pedía, ¿donde quedó el aprendizaje?

Penosamente el tema volvió inútil a un usuario mas, gracias por hacer la tarea de los demás.
tranquilo pateketrueke, créeme que hay gente que aprende mucho mas fácilmente así.

(no todos pero si algunos)
algunos, pero no todos...

humanista, me haces quedar mal parado, ¿sabes?

tal como dijo pateketrueke: "¿donde quedó el aprendizaje? "
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #30 (permalink)  
Antiguo 28/05/2011, 04:35
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años
Puntos: 15
Respuesta: acortar links

No stramin yo no creo que hayas quedado mal parado, todo lo contrario. Se agradece un montón tu ayuda (solucione finalmente o no el problema).

El aprendizaje no está en las respuestas de las personas sino en lo que el "aprendiz" sea capaz de sacar de ellas.

Gracias.

Etiquetas: acortar, apache, links, rewrite, url-amigables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 07:16.