Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá
esse é meu código:
$url = file_get_contents('http://www.estadao.com.br/');
preg_match_all('/\b(?:(?:https?|http):\/\/|www\.)[-a-z]*.com.br/i', $url, $conteudo);
print_r($conteudo);
Ele basicamente filtra todas urls ".com.br"
o resultado é esse:
Array ( [0] => Array ( [0] => www.estadao.com.br [1] => www.assineestadao.com.br [2] => www.assineestadao.com.br [3] => www.estadao.com.br [4] => www.estadao.com.br [5] => www.estadao.com.br [6] => www.assineestadao.com.br [7] => www.estadao.com.br [8] => www.estadao.com.br [9] => www.assineestadao.com.br [10] => www.estadao.com.br [11] => www.estadao.com.br [12] => www.estadao.com.br [13] => www.classificadosestadao.com.br [14] => www.estadao.com.br [15] => www.estadao.com.br [16] => www.estadao.com.br [17] => www.estadao.com.br [18] => www.estadao.com.br [19] => www.estadao.com.br [20] => www.estadao.com.br [21] => www.estadao.com.br [22] => www.ilocal.com.br [23] => www.broadcastpolitico.com.br [24] => www.estadao.com.br [25] => www.estadao.com.br [26] => www.estadao.com.br [27] => www.assineestadao.com.br [28] => www.estadao.com.br [29] => www.estadao.com.br [30] => www.estadao.com.br [31] => www.estadao.com.br [32] => www.estadao.com.br [33] => www.estadao.com.br [34] => www.estadao.com.br [35] => www.estadao.com.br [36] => www.estadao.com.br [37] => www.estadao.com.br [38] => www.estadao.com.br [39] => www.estadao.com.br [40] => www.estadao.com.br [41] => www.estadao.com.br [42] => www.estadao.com.br [43] => www.estadao.com.br [44] => www.estadao.com.br [45] => www.estadao.com.br [46] => www.estadao.com.br [47] => www.estadao.com.br [48] => www.estadao.com.br [49] => www.estadao.com.br [50] => www.broadcastpolitico.com.br [51] => www.estadao.com.br [52] => www.estadao.com.br [53] => www.estadao.com.br [54] => www.ilocal.com.br [55] => www.estadao.com.br ) )
Como faço para não retornar urls duplicadas?
Agradeço ajuda
>
http://php.net/manual/pt_BR/function.array-unique.php
Obrigada @Elemke, tbm tentei o resultado foi o mesmo
Obrigada @Elemke, tbm tentei o resultado foi o mesmo
Provavelmente não resultou porque você aplicou a função a variável "$conteudo" que se reparar é um array de um elemento e esse único elemento é o seu array com os urls.
Para ordenar a lista você tem que fazer:
$conteudo[0] = array_unique( $conteudo[0] );
Se quiser que conteudo seja apenas um array de strings em vez de um array com um array lá dentro:
$conteudo = array_unique( $conteudo[0]);
Se você fizer exatamente que o sousatg lhe explicou você terá o seguinte retorno
Warning: array_unique() expects parameter 1 to be array, string given
Isso é claro me baseando no seguinte modelo:
<?php
$conteudo = array("guilherme");
$conteudo[0] = array_unique($conteudo[0]);
echo $conteudo;
?>
Pelo que tenho claro do array_unique, você tem que passar sempre um array "por inteiro" e não apenas um indice ou uma variavel que não seja um array.
Depois para imprimir os seus resultados, ai sim você pega separado por índice ou coloca num loop para imprimir todos os índices ÚNICOS/SEM REPETIÇÃO do array.
<?php
$conteudo = array("guilherme","guilherme","luiz","luiz","silva","silva");
$unico = array_unique($conteudo);
print_r($unico);
?>
Dessa forma eu terei a seguinte saida:
Array ( [0] => guilherme [2] => luiz [4] => silva )
Obrigada a todos pela resposta:
>
Se quiser que conteudo seja apenas um array de strings em vez de um array com um array lá dentro:
$conteudo = array_unique( $conteudo[0]);
Transformar em apenas um array de strings resolveu
Tentei usar a função flip array mas não deu certo