Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Ola pessoal boa noite
Bom pessoal estou fazendo uma função para formatar url de rede social,
FACEBOOK, INSTAGRAM & TWITTER, não sei se esta da forma correta em fazer.
Ex: https://www.facebook.com/minha-pagina quero pegar apenas o final que seria minha-pagina
Isso seria tanto no instagram e twitter
Fiz da seguinte forma
<?php
function FormatarUrlRedeSocial($URL){
if (strstr($URL, 'https://facebook.com/') || strstr($URL, 'http://facebook.com/')) {
$UrlRedeSocial = explode('facebook.com/', $URL);
return $UrlRedeSocial[1];
} elseif (strstr($URL, 'http://') || strstr($URL, 'https://')){
$UrlRedeSocial = explode($URL);
$UrlRedeSocial = explode($UrlRedeSocial[1]);
return $UrlRedeSocial[0];
} else {
return $URL;
}
}
?>
Porem quero que seja apenas uma função unica para todos
Tipo
https://www.facebook.com/<?= FormatarUrlRedeSocial($dados['url_facebook']); ?>
https://www.instagram.com/<?= FormatarUrlRedeSocial($dados['url_instagram']); ?>
https://www.twitter.com/<?= FormatarUrlRedeSocial($dados['url_twitter']); ?>
Bom do porque não usar os link´s direto, bom pois em outras parte que vou pegar este nome no final não poderia ter o link completo
Então decide fazer uma função onde não vou precisar criar vários campos na tabela sem necessidades. Espero que possam entender o que preciso.
Se puder da uma ajuda fico grato...>
9 minutos atrás, Matheus Tavares disse:
Olá @Jack Oliveira, tudo bem?
Vou lhe apresentar uma função bem legal do PHP, a parse_url:
<?php
$url1 = 'https://www.facebook.com/gilberto.gil';
$url2 = 'https://instagram.com/gilberto.gil/posts';
$url3 = 'https://twitter.com/gilberto.gil?parametro_qualquer=123';
$parsed_url1 = parse_url( $url1 );
$parsed_url2 = parse_url( $url2 );
$parsed_url3 = parse_url( $url3 );
print_r( $parsed_url1 );
print_r( $parsed_url2 );
print_r( $parsed_url3 );
Saída:
Array
(
[scheme] => https
[host] => www.facebook.com
[path] => /gilberto.gil
) [scheme] => https
[host] => instagram.com
[path] => /gilberto.gil/posts
) [scheme] => https
[host] => twitter.com
[path] => /gilberto.gil
[query] => parametro_qualquer=123
)
Massa né?
Bom, assim facilita bastante pra pegar o usuário. Basta **pegar o path, retirar a primeira barra e cortar a partir da próxima barra**. Algo assim:
<?php
function getSocialUser( $uri ) {
$parsed = parse_url( $uri );
$path = $parsed[ 'path' ];// Usuário, mas com caracteres que devem ser filtrados
$host = str_replace( 'www.', '', $parsed[ 'host' ] );// Retiramos o 'www.'
$host_name = explode( '.', $host )[ 0 ];// Separamos por '.' e pegamos a primeira parte
$allowed_hosts = [ 'twitter', 'facebook', 'instagram' ];// Hosts permitidos
if ( !in_array( $host_name, $allowed_hosts ) )
return false;// Se não estiver entre os permitidos, retorne falso (ou exception)
return strtok( ltrim( $path, '/' ), '/' );// retorna o usuário filtrado
}
$url1 = 'https://www.facebook.com/gilberto.gil';
$url2 = 'http://instagram.com/gilberto.gil/posts';
$url3 = 'https://twitter.com/gilberto.gil?parametro_qualquer=123';
$url4 = 'https://google.com/gilberto.gil?parametro_qualquer=123';
echo ( getSocialUser( $url1 ) ?: 'Inválido' ) . "\n";
echo ( getSocialUser( $url2 ) ?: 'Inválido' ) . "\n";
echo ( getSocialUser( $url3 ) ?: 'Inválido' ) . "\n";
echo ( getSocialUser( $url4 ) ?: 'Inválido' ) . "\n";
Saída:
gilberto.gil
gilberto.gil
gilberto.gil
Inválido
Observe que os testes contemplam exemplos com http, https, parâmetros arbitrários, url com caminho excedente, com www e sem www.
Veja esse código rodando: https://3v4l.org/Uib0j
Boa noite @Matheus Tavares obrigado.....
Funcionou como precisava vlw mesmo....
Olá @Jack Oliveira, tudo bem?
Vou lhe apresentar uma função bem legal do PHP, a parse_url:
Array
(
Array
(
Array
(
gilberto.gil
gilberto.gil
gilberto.gil
Inválido
Observe que os testes contemplam exemplos com http, https, parâmetros arbitrários, url com caminho excedente, com www e sem www.
Veja esse código rodando: https://3v4l.org/Uib0j