Ir para conteúdo

Arquivado

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

Giihh

Array sem conteudo duplicado

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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]);

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 )

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

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.