Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Jonathan Alencar

Como saber se texto contem url?

Recommended Posts

Olá pessoal estou com uma dúvida.

 

A dúvida é como saber se uma $string contém um texto.

 

Ex:

 

$texto = 'Este é meu site www.tal.com.br';

 

O que eu estou tentando fazer é que este endereço URL que está no texto seja substituída realmente por um link.

 

Ex: Se contém uma url ele insere nesta url a tag ex:

 

Este é meu site <a href="www.tal.com.br">www.tal.com.br</a>

 

Isso é possível?

 

Desde já agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A sim Expressão Regular...

 

Rsrs Não tentei não ... pode me dar uma luz!?

 

Bom obrigado pela dica.... Achei a Luz ahahaha. :P

 

Como achei o código em outro forum e não fui eu que desenvolvi irei manter os créditos do mesmo.

 

Obrigado pessoal a dica foi excelente.. :)

 

Moderador Plx Set [Resolvido].

 

<?php

#############################################
#                                           #
#  Autor: Roberto Beraldo Chaiben (Beraldo) #
#   E-Mail: rbchaiben[arroba]gmail.com      #
#                                           #
#############################################

/*
  string MontarLink (string texto)

  A função MontarLink() transforma em links as URLs iniciadas por 'http://' contidas no argumento 'texto'.
  Se a URL tiver mais que 60 caracteres, serão exibidos os 25 primeiros, seguidos de reticências (...) e os últimos 15.
  Se 'texto' não for uma string, a função retorna FALSE.

  IMPORTANTE: Se o link se iniciar por 'www' e não tiver 'http://', a função nào surtirá efeito.
*/


function MontarLink ($texto)
{
      if (!is_string ($texto))
          return false;

   $er = "/http:\/\/(www\.|.*?\/)?([a-zA-Z0-9]+|_|-)+(\.(([0-9a-zA-Z]|-|_|\/|\?|=|&)+))+/i";
   preg_match_all ($er, $texto, $match);

   foreach ($match[0] as $link)
   {

       $link = strtolower ($link);
       if (strstr ($link, "http://") === false)
           $link = "http://" . $link;
          $link_len = strlen ($link);

       //troca "&" por "&", tornando o link válido pela W3C
       $web_link = str_replace ("&", "&", $link);
      $texto = str_ireplace ($link, "<a href=\"" . $web_link . "\" target=\"_blank\">". (($link_len > 60) ? substr ($web_link, 0, 25). "...". substr ($web_link, -15) : $link) ."</a>", $texto);

   }

   return $texto;
}

$textos = 'texto texto texto texto http://site.com.br/123 texto texto texto';
echo MontarLink($textos);

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha so>>>

 

texto.php

<form method=post action=mostrarlinks.php>
Texto:<textarea rows="2" cols="20" name=texto></textarea>
<input type="submit" value="Mostrar">
</form>

 

 

mostrarlinks.php

<?php


function MontarLink ($texto)
{
  	if (!is_string ($texto))
  		return false;

$er = "/http:\/\/(www\.|.*?\/)?([a-zA-Z0-9]+|_|-)+(\.(([0-9a-zA-Z]|-|_|\/|\?|=|&)+))+/i";
preg_match_all ($er, $texto, $match);

foreach ($match[0] as $link)
{

   	$link = strtolower ($link);
   	if (strstr ($link, "http://") === false)
       	$link = "http://" . $link;


   	//troca "&" por "&", tornando o link válido pela W3C
   	$web_link = str_replace ("&", "&", $link);
  	$texto = str_ireplace ($link, "<a href=\"" . $web_link . "\" target=\"_blank\">".$web_link."</a>", $texto);

}

return $texto;
}

$texto = $_POST['texto'];
echo MontarLink($texto);

?>

 

 

tem que ter o http:// no inicio da url,se alguem souber ignorar o http:// e tranforma tbm akeles url iniciando com www,seria bom

 

 

sistema online

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.