PHP - encoger varios links de un string

   
Vista:

encoger varios links de un string

Publicado por daniel (50 intervenciones) el 23/11/2015 06:00:57
hola a todos los que me lean... tengo el siguiente problema
tengo varios links en el campo links, en ese campo tengo una función para convertirlos en links, que es ésta:
1
2
3
4
5
6
$string = $fila;
function plain_url_to_link($string) {
  return preg_replace(
  '%(https?|ftp)://([-A-Z0-9./_*?&;=#!]+)%i', 
  '<a target="blank" rel="nofollow" href="$0" target="_blank">$0</a>', $string);
}

... preo ahora aparte de eso quiero encoger los links que son muy largos, por ejemplo
https://mega.nz/#!BYBUSTbb!g3dsNfFYQK0RcTa9lDKpx_-43QjUti37kvxHRpYwb-U
quiero que quede asi o algo parecido:
https://mega.nz/#!B...3QjUti37kvxHRpYwb-U

que los links no pasen de los 40 caracteres(por ejemplo)

Notas:
- no soy muy experto en php y mysqlpero algo me defiendo.
- reitero que elcampo linkstiene varioslinks como son como 7

bueno ese es mi problema .... espero que alguien me ayude desde ya gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

encoger varios links de un string

Publicado por xve (5523 intervenciones) el 23/11/2015 08:11:35
Hola Daniel, para obtener 40 caracteres de una cadena, una manera es utilizando la función substr()...
http://php.net/manual/es/function.substr.php

1
$nuevaUrl=substr($url,0,40);

es esto lo que buscas?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

encoger varios links de un string

Publicado por daniel (50 intervenciones) el 24/11/2015 03:59:26
Hola xve , lo que tu me dices es lo que estoy buscando... pero tengo otro problema... no se como acomodarlo en mi codigo
disculpa la patudez
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

encoger varios links de un string

Publicado por daniel (50 intervenciones) el 24/11/2015 04:56:31
tengo este codigo
1
2
$cad = $fila;
$string = substr($cad, 2, 40);

y este es el echo:
1
<?php echo ((plain_url_to_link (nl2br($string['Links'])))); ?>

y la verdad es que no tengo mucha idea donde va...
pero creo que es en el echo
ayuda please
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

encoger varios links de un string

Publicado por xve (5523 intervenciones) el 24/11/2015 10:01:59
Viendo el código que nos muestras mas abajo, creo que tienes que hacerlo así:

1
2
$cad = $fila;
<?php echo ((plain_url_to_link (nl2br(substr($cad['Links'],2,40))))); ?>

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

encoger varios links de un string

Publicado por daniel (50 intervenciones) el 24/11/2015 11:28:00
resulto pero a medias...
lo deje asi,
1
echo ((plain_url_to_link (nl2br(substr($string['Links'],2,40)))));
pero solo me acorta el primer link y ademas ya no es clickable

debo decir ademas que lo intente como tu dijiste y tambien de esta manera:
borre
1
$cad = $fila;
porque antes de ese codigo tengo:
1
$string = $fila;
en la funcion plain_url_to_link

si lo que borre esta mal dimelo por favor
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de VRM

encoger varios links de un string

Publicado por VRM (171 intervenciones) el 23/11/2015 09:25:20
Hola:

Si lo que quieres es que cuando el link tenga una longitud mayor que 40 tome los primeros 15 le añada " .... " y luego los 5 últimos puede servirte esto:
1
2
3
4
5
if ( strlen($link) > 40 ) {
     $nuevo_link = substr($link,0,15)." .... ".substr($link,-5);
} else {
     $nuevo_link = $link;
}

Si el link tiene caracteres especiales (por ejemplo tildes) es mejor usar la función mb_substr.

Saludos de Víctor.-
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

encoger varios links de un string

Publicado por daniel (50 intervenciones) el 23/11/2015 20:59:08
gracias xve y vrm pero no me funcionaron...
les recuerdo que es un campo mysql con varios links dentro...
bueno si no fuese mucho la molestia me podrian dar una funcion para acortar los links... ya que los
codigos que me dieron no me funcionaron...
saludos y gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de VRM

encoger varios links de un string

Publicado por VRM (171 intervenciones) el 24/11/2015 07:03:26
Hola:

Deberías madar más información. Por ejemplo: como están separados los link en el campo de mysql. Se supone que es un campo varchar.

El código que mandas está poco explicado. $fila supongo que es una fila de la base de datos, ¿toda la fila? o sólo un campo. Si es toda la fila será un array seguramente asociativo. En la segunda linea acortas la fila del caracter 2 y una longitud de 40, pero tampoco la entiendo. Y en la tercera tienes dos funciones. La primera será probablemente:
1
2
3
4
5
6
7
8
<?php
$string = $fila;
function plain_url_to_link($string) {
  return preg_replace(
  '%(https?|ftp)://([-A-Z0-9./_*?&;=#!]+)%i', 
  '<a target="blank" rel="nofollow" href="$0" target="_blank">$0</a>', $string);
}
?>
La segunda es para insertar <br> o <br /> donde exista \n.

Saludos de Víctor.-
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

encoger varios links de un string

Publicado por daniel (50 intervenciones) el 24/11/2015 09:00:34
hola, tienes razon envie muy poca informacion.
bueno, aqui esta el codigo que creo que nesecitas saber por si puedes ayudarme...
1
2
3
4
5
6
7
while ($fila = mysql_fetch_assoc($query)){;
$string = $fila;
function plain_url_to_link($string) {
  return preg_replace(
  '%(https?|ftp)://([-A-Z0-9./_*?&;=#!]+)%i', 
  '<a target="blank" rel="nofollow" href="$0" target="_blank">$0</a>', $string);
}

1
2
3
4
5
6
7
8
<div class="ver">
<h1><?php  echo 'Descargar ' .$fila['Nombre']. ' en Latino'; ?>
      </h1>
<img src="exadmin/documentos/peliculas/<?php echo $fila['Imagen']; ?>" width="185" height="255" alt="" />
<p><?php echo $fila['Sinopsis']; ?></p>
    <p><?php echo nl2br($fila['Info']); ?></p>
<p><?php echo ((plain_url_to_link (nl2br($string['Links'])))); ?></p>
};

...los links van en un campo varchar y los inserto desde un area de texto ...
respecto a $fila, la uso para todos los campos...
y respecto a las funciones que tengo es tal como tu dices ( plain_url_to_link es para convertir texto en links y nl2br para insertar <br> o <br />,
... la pagina esta hecha con php y mysql...
espero que puedas ayudarme XD saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de VRM

encoger varios links de un string

Publicado por VRM (171 intervenciones) el 24/11/2015 09:21:20
Hola:

Me queda una cosa por saber: ¿Cómo se separan los link en el campo links? ¿por espacios? ¿por saltos de linea?

Saludos de Víctor.-
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

encoger varios links de un string

Publicado por daniel (50 intervenciones) el 24/11/2015 09:35:56
pongo un link doy enter, luego agrego otro, doy enter de nuevo y asi
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Víctor

encoger varios links de un string

Publicado por Víctor (171 intervenciones) el 25/11/2015 09:31:26
Hola:

A ver si esto te vale.

Saludos de Víctor.-
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

encoger varios links de un string

Publicado por daniel (50 intervenciones) el 26/11/2015 01:47:17
hola de nuevo victor y gracias por tomarte el tiempo
Implemente el codigo que me enviaste pero me arroja un error que este
Fatal error: Call to a member function fetch_array() on a non-object in C:\wamp\www\newwebSt\ver_todas.php on line 179
esa linea es esta:
1
$linea = $fila->fetch_array();

no estoy muy seguro de lo que puede ser pero se me ocurre que es porque no tengo instalado mysqli
uso mysql version 5.5.24, php 5.4.3 y apache 2,2,22
ese es el unico error que me da

lo unico que modifique de tu codigo fue esto:

1
2
3
4
5
6
7
8
9
10
/* Obtenemos la primera linea
 */
$linea = $fila->fetch_array();
$dato = $linea["links"];
 
/**
 * Separamos cada link. Se colocan en el array $links
 */
$delimitador = chr(13).chr(10);
$links = explode($delimitador,$dato);

adeamas un codigo adicional
1
2
3
$id = $_GET['todas'];
$query = mysql_query("select * from tbltodaslaspelis where idPelicula ='".$_GET['todas']."'");
while ($fila = mysql_fetch_assoc($query)){;

gracias por tu tiempo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar