Saber se uma variável contém um link e pegar o link inteiro utilizando PHP?

1. Saber se uma variável contém um link e pegar o link inteiro utilizando PHP?

Daniel Silva
drskaka

(usa Outra)

Enviado em 02/09/2020 - 09:54h

Exemplo: O banco XYZ quer falar com você. Acesse xyz.net e saiba mais.

No exemplo acima eu preciso pegar o link inteiro xyz.net e verificar se ele está autorizado em meu banco de dados.

Já tentei este exemplo mas não consigo pegar todo o link, apenas a palavra:

function procpalavras ($frase, $palavras, $resultado = 0) {
foreach ( $palavras as $key => $value ) {
$pos = strpos($frase, $value);
if ($pos !== false) {
$palavras_encontradas[] = $value; }
}
$palavras_encontradas = implode(", ",$palavras_encontradas);
return $palavras_encontradas;
}

$frase = "O banco XYZ quer falar com você. Acesse xyz.net e saiba mais";
$palavras = array ("coelho","eu","xyz","gato");
echo procpalavras($frase, $palavras);


Obrigado e bom dia a todos!

Carlos Silva


  


2. Re: Saber se uma variável contém um link e pegar o link inteiro utilizando PHP?

Johnny Saymon
johnnysaymon

(usa Ubuntu)

Enviado em 08/09/2020 - 15:53h

Veja se é assim que você precisa:

<?php
function procpalavras($frase, $palavras)
{
$palavrasUnidas = implode('|', $palavras);
$sufixos = implode('|', ['net','com','org']);
preg_match_all("/((?:{$palavrasUnidas}){1}\.{1}(?:{$sufixos}){1}(?:\.br)?)/m", $frase, $resultado);
if(isset($resultado[1]) == false) {
return '';
}

return implode(', ', $resultado[1]);
}
$frase = "O banco XYZ quer falar com você. Acesse xyz.net e gato.com.br saiba mais";
$palavras = array ("coelho","eu","xyz","gato");
echo procpalavras($frase, $palavras);



3. Re: Saber se uma variável contém um link e pegar o link inteiro utilizando PHP?

Daniel Silva
drskaka

(usa Outra)

Enviado em 08/09/2020 - 17:08h

johnnysaymon escreveu:

Veja se é assim que você precisa:

<?php
function procpalavras($frase, $palavras)
{
$palavrasUnidas = implode('|', $palavras);
$sufixos = implode('|', ['net','com','org']);
preg_match_all("/((?:{$palavrasUnidas}){1}\.{1}(?:{$sufixos}){1}(?:\.br)?)/m", $frase, $resultado);
if(isset($resultado[1]) == false) {
return '';
}

return implode(', ', $resultado[1]);
}
$frase = "O banco XYZ quer falar com você. Acesse xyz.net e gato.com.br saiba mais";
$palavras = array ("coelho","eu","xyz","gato");
echo procpalavras($frase, $palavras);


Muito obrigado, era exatamente isso que eu precisava. Valeu mesmo, sucesso pra você amigo!
Grande abraço!



4. Re: Saber se uma variável contém um link e pegar o link inteiro utilizando PHP?

Daniel Silva
drskaka

(usa Outra)

Enviado em 08/09/2020 - 17:33h

Boa tarde @johnnysaymon, tudo bem?

E no caso para pegar todo o link/URL, por exemplo bit.ly/LinkCurto ele pega apenas o bit.ly, eu precisava que ele pegasse todo o link/Url, teria como?
Obrigado


5. Re: Saber se uma variável contém um link e pegar o link inteiro utilizando PHP?

Johnny Saymon
johnnysaymon

(usa Ubuntu)

Enviado em 08/09/2020 - 18:34h

Olá @drskaka.

Sim, existe tenta fazer assim então:

<?php
function procpalavras($frase, $palavras)
{
$palavrasUnidas = implode('|', $palavras);
$sufixos = implode('|', ['net','com','org','ly']);
preg_match_all("/((?:{$palavrasUnidas}){1}\.{1}(?:{$sufixos}){1}(?:\.br)?(?:\/[\w-]+)?)/m", $frase, $resultado);
if(isset($resultado[1]) == false) {
return '';
}

return implode(', ', $resultado[1]);
}
$frase = "O banco XYZ quer falar com você. Acesse xyz.net e bit.ly/LinkCurto saiba mais";
$palavras = array ("coelho","eu","xyz","bit");
echo procpalavras($frase, $palavras);


Observação: Esse código vai resolver seu problema se tiver um cenário bem específico, pois ele não vai pegar qualquer link, apenas os passados como parâmetros pela função e com os sufixos definidos.


6. Re: Saber se uma variável contém um link e pegar o link inteiro utilizando PHP?

Daniel Silva
drskaka

(usa Outra)

Enviado em 08/09/2020 - 18:58h


Olá @johnnysaymon agora sim ficou perfeito.

Quanto ao código resolver meu problema, sim claro somente se eu informar os parâmetros no sufixo e somente eles que ele vai conseguir detectar. Mas já resolveu meu problema.

Muitíssimo obrigado mais uma vez.

Grande abraço, sucesso pra você!


7. Re: Saber se uma variável contém um link e pegar o link inteiro utilizando PHP?

Daniel Silva
drskaka

(usa Outra)

Enviado em 09/09/2020 - 09:51h

johnnysaymon escreveu:

Olá @drskaka.

Sim, existe tenta fazer assim então:

<?php
function procpalavras($frase, $palavras)
{
$palavrasUnidas = implode('|', $palavras);
$sufixos = implode('|', ['net','com','org','ly']);
preg_match_all("/((?:{$palavrasUnidas}){1}\.{1}(?:{$sufixos}){1}(?:\.br)?(?:\/[\w-]+)?)/m", $frase, $resultado);
if(isset($resultado[1]) == false) {
return '';
}

return implode(', ', $resultado[1]);
}
$frase = "O banco XYZ quer falar com você. Acesse xyz.net e bit.ly/LinkCurto saiba mais";
$palavras = array ("coelho","eu","xyz","bit");
echo procpalavras($frase, $palavras);


Observação: Esse código vai resolver seu problema se tiver um cenário bem específico, pois ele não vai pegar qualquer link, apenas os passados como parâmetros pela função e com os sufixos definidos.


Bom dia johnnysaymon:

Não querendo abusar da sua preciosa ajuda, mas teria como pegar ao invés de um determinado domínio pegar toda e qualquer palavra que esteja unida por um ponto em uma mensagem, como por exemplo Tenho uma casa.linda com um lindo jardim. o código destacar casa.linda pois desta maneira eu poderia fazer com que meu sistema não dependesse de eu informar centenas de palavras e centenas de sufixos para verificação e destacaria toda e qualquer palavra que estivesse unida por um ponto.

Teria como fazer isso alterando esse código que você me mandou?

Muitíssimo obrigado mais uma vez.

Abraço!




8. Re: Saber se uma variável contém um link e pegar o link inteiro utilizando PHP?

Johnny Saymon
johnnysaymon

(usa Ubuntu)

Enviado em 09/09/2020 - 10:52h

Olá.

Tem sim, o código ficará assim:

<?php
function extrairPalavrasComPontos($texto)
{
preg_match_all("/(\w+(?:\.\w+)+)+/m", $texto, $resultado);
if(isset($resultado[1]) == false) {
return '';
}

return implode(', ', $resultado[1]);
}
$frase = "Tenho uma casa.linda que publiquei no youtube.com, paguei impostos no site da receita.fazenda.gov.br e comprei os móveis em www.americadas.com.br.";
echo extrairPalavrasComPontos($frase);


Mas acredito que o que você deseja mesmo é pegar URLs, sendo assim você pode pesquisar na internet por REGEX de URL e substituir o primeiro parâmetro lá da função
preg_match_all 
.


9. Re: Saber se uma variável contém um link e pegar o link inteiro utilizando PHP?

Daniel Silva
drskaka

(usa Outra)

Enviado em 09/09/2020 - 18:33h

johnnysaymon escreveu:

Olá.

Tem sim, o código ficará assim:

<?php
function extrairPalavrasComPontos($texto)
{
preg_match_all("/(\w+(?:\.\w+)+)+/m", $texto, $resultado);
if(isset($resultado[1]) == false) {
return '';
}

return implode(', ', $resultado[1]);
}
$frase = "Tenho uma casa.linda que publiquei no youtube.com, paguei impostos no site da receita.fazenda.gov.br e comprei os móveis em www.americadas.com.br.";
echo extrairPalavrasComPontos($frase);


Mas acredito que o que você deseja mesmo é pegar URLs, sendo assim você pode pesquisar na internet por REGEX de URL e substituir o primeiro parâmetro lá da função
preg_match_all 
.


Olá johnnysaymon: muito obrigado amigo, com esse código eu já resolvo o meu problema. Procurei na net por Regex URL, como você sugeriu, encontrei muito artigo para validar uma URL e justamente isso que eu faço, assim que é destacado a suposta URL da mensagem SMS eu passo ela na função para validar se é uma URL, se for eu consulto na minha base pra ver se ela está autorizada e se estiver eu libero a mensagem, caso contrário a mensagem não é enviada.

Mais uma vez muito obrigado de coração.

Abraço!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts