Ir para conteúdo

Arquivado

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

Flávio Henrique

Exibir links em ordem alfabética

Recommended Posts

Olá!

Estou pensando em fazer um script php onde pega vários links embaralhados e exibe em ordem alfabética!

Por exemplo, terá uma textarea onde irei colocar os links:


<a href="http://site.com.br/link" target="_blank" class="title" title="linktitulo">LINK 01</a>

<a href="http://site.com.br/link" target="_blank" class="title" title="linktitulo">LINK 04</a>

<a href="http://site.com.br/link2" target="_blank" class="title" title="linktitulo">LINK 02</a>

<a href="http://site.com.br/link" target="_blank" class="title" title="linktitulo">LINK 03</a>


Daí quando clicar no botão submit que vai para a outra página onde o php fará a mágica, será usado o $_POST para pegar os dados e depois será usado o explode para separar os valores por linha, cada linha será um link!

Apartir daí não sei qual função usar para pegar a parte do LINK 01, LINK 03 que será após o "> e antes do </a> e qual função irá exibir o código do link completo em ordem alfabética ou seja, irá mostrar:



<a href="http://site.com.br/link" target="_blank" class="title" title="linktitulo">LINK 01</a>

<a href="http://site.com.br/link2" target="_blank" class="title" title="linktitulo">LINK 02</a>

<a href="http://site.com.br/link" target="_blank" class="title" title="linktitulo">LINK 03</a>

<a href="http://site.com.br/link" target="_blank" class="title" title="linktitulo">LINK 04</a>



Alguém me dá uma luz?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara tem varias funcoes de que ordena array

sort() ou asort() sao 2 delas.

como vai vim de um textarea vc sepera por linha depois ordena

Compartilhar este post


Link para o post
Compartilhar em outros sites

pois é a parte mais importante eu nao falei kkk :lol:

 

taí, em $textoLinks esta um array com os links ordenados

$urls = array('<a href="http://site.com.br/link" target="_blank" class="title" title="linktitulo">bco 02</a>',
    '<a href="http://site.com.br/link" target="_blank" class="title" title="linktitulo">caco 03</a>',
    '<a href="http://site.com.br/link" target="_blank" class="title" title="linktitulo">aaco 01</a>');

 
foreach ($urls as $value) {
    preg_match('/\>(.*)<\/a>/', $value, $matches);
    $textoLinks[$matches[1]] = $value;
    
}
ksort($textoLinks);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se estou fazendo progresso.. vou enviar o código ainda dando erro:

Index.php

<form method="post" action="exibir.php">

<h3>Coloque aqui os links:</h3>
<textarea type="text" name="links"></textarea>
<h3>Coloque aqui os nomes dos respectivos links:</h3>
<textarea type="text" name="nomes"></textarea>
<input type="submit" value="Enviar"/>
</form>

exibir.php

<?php
function array_sort($array, $on, $order=SORT_ASC)
{
    $new_array = array();
    $sortable_array = array();

    if (count($array) > 0) {
        foreach ($array as $k => $v) {
            if (is_array($v)) {
                foreach ($v as $k2 => $v2) {
                    if ($k2 == $on) {
                        $sortable_array[$k] = $v2;
                    }
                }
            } else {
                $sortable_array[$k] = $v;
            }
        }

        switch ($order) {
            case SORT_ASC:
                asort($sortable_array);
            break;
            case SORT_DESC:
                arsort($sortable_array);
            break;
        }

        foreach ($sortable_array as $k => $v) {
            $new_array[$k] = $array[$k];
        }
    }

    return $new_array;
}

for($i = 0; $i <= count(explode("\r\n", $_POST['links'])); $i++){
	$links = $_POST['links'];
$nomes = $_POST['nomes'];
$lnk = explode("\r\n", $links);
$noms = explode("\r\n", $nomes);
$contlnk = count($lnk);

$lnkarray = array($noms[$i] => $lnk[$i]);
print_r(array_sort($lnkarray, $noms, SORT_ASC));
echo"<br />";
}


?>

E o que está exibindo na tela:

 

 

 

Array ( [google] => http://google.com )
Array ( [facebook] => http://www.facebook.com )

( ! ) Notice: Undefined offset: 2 in C:\wamp\www\sistemalink\exibir.php on line 44 Call Stack # Time Memory Function Location 1 0.0005 252456 {main}( ) ..\exibir.php:0
( ! ) Notice: Undefined offset: 2 in C:\wamp\www\sistemalink\exibir.php on line 44 Call Stack # Time Memory Function Location 1 0.0005 252456 {main}( ) ..\exibir.php:0 Array ( [] => )

 

A linha com erro é com o seguinte código:

$lnkarray = array($noms[$i] => $lnk[$i]);
Ele ainda não está exibindo de forma ascendente nem decrescente.. não sei porque a função não está pegando! Tentei por a função dentro do for e nada..

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

WTF? vc quer ajuda mas ao receber a dica ignora,

te passei o codigo que testei e você parece que nem tentou usar, veio com outro codigo grande bugado

 

o trecho que eu te passei ja ordena!

 

a unica coisa que você tem que fazer antes é:

pegar o valor do textarea separar num array só isso. (meu exemplo ja era em cima de um array)

achei que isso era obvio por isso nem coloquei

 

ai

<?php
$nomes = $_GET['nomes'];

$urls = explode("\r\n", $nomes);
foreach ($urls as $value) {
    preg_match('/\>(.*)<\/a>/', $value, $matches);
    $textoLinks[$matches[1]] = $value;
}
ksort($textoLinks);
var_dump($textoLinks);
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi muito os seus códigos por isso tentei de outra forma!

nesse segundo código você pega do formulário e usa o foreach para tirar o excesso(preg_match) correto? daí fica o link com o nome.. Depois de muita tentativas(usei foreach,for enfim..) consegui! pode testar aí ver se da certo? para quem quiser o código:

 

index.php

<form method="post" action="exibir.php">

<h3>Coloque aqui os links(a href...):</h3>
<textarea type="text" name="nomes"></textarea>
<input type="submit" value="Enviar"/>
</form>

exibir.php

<?php
$nomes = $_POST['nomes'];

$urls = explode("\r\n", $nomes);
foreach ($urls as $value) {
    preg_match('/\>(.*)<\/a>/', $value, $matches);
    $textoLinks[$matches[1]] = $value;
}
ksort($textoLinks);
$registros = implode("\r\n<br />",$textoLinks)."<br />";
echo $registros;


?>

Compartilhar este post


Link para o post
Compartilhar em outros sites
Depois de muita tentativas(usei foreach,for enfim..) consegui! pode testar aí ver se da certo? para quem quiser o código:

 

 

<_<

esse é o codigo que eu postei,

 

Por nada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

AUSHASUsh obrigado por me ajudar.. não tava entendendo seu código.. depois de umas pesquisas entendi! Pensei que seria muito complicado.. eu tava querendo o for para exibir o array apenas o link.. como não tava dando certo deixei assim que também atende o que eu queria!

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por clovis.sardinha
      Pessoal, não tenho certeza se coloco a dúvida aqui ou no html. Envolve os dois. 
      Eu tenho um site muito antigo, php 5.2, e resolvi mudar a página principal colocando um efeito parallax.
      No servidor local o site roda normalmente, mas no servidor da localweb as imagens do parallax não aparecem.
      a página mostrada é esta:
      <div class="container-fluid"> <!-- começo do parallax --> <div class="caixa1"> <div class="conteudo-titulo"> <!-- <span class="titulo">TECNOCLEAN - SEGURANÇA E EFICIÊNCIA</span> --> </div> </div> <div class="conteudo"> <h3>A EMPRESA</h3> <p style="width: 80%; margin: auto; text-align: justify;"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus gravida dolor sed mattis mollis. Morbi sodales euismod rhoncus. Suspendisse potenti. Integer hendrerit vitae lectus at feugiat. Quisque libero neque, imperdiet a est congue, elementum ultrices diam. Sed ut felis scelerisque, volutpat justo ut, congue quam. Ut non vestibulum erat, vel semper dolor. Nulla facilisi. Sed convallis at lacus quis venenatis..<br> </p> </div> <div class="caixa2"> <div class="conteudo-titulo" > <!-- <span class="titulo">NOSSO DIFERENCIAL</span> --> </div> </div> <div > <div> <ul class="list-group list-group-flush text-center font-weight-bold"> <li class="list-group-item"><h3>Tradição</h3> 26 anos de experiência</li> <li class="list-group-item"><h3>Confiabilidade</h3> mais de mil clientes</li> <li class="list-group-item"><h3>Segurança</h3> técnica e equipamentos</li> <li class="list-group-item"><h3>Garantia</h3> produtos de qualidade</li> <li class="list-group-item"><h3>Rapidez</h3> equipe especializada</li> </ul> </div> </div> <div class="caixa3"> <div class="conteudo-titulo"> <!-- <span class="titulo">CLIENTES</span> --> </div> </div> <div class="caixa4"> <div class="conteudo-titulo"> <!-- <span class="titulo">EQUIPAMENTOS</span> --> </div> </div> </div> </div> </div> O Css é este:
      /* Efeito Parallax -------------------------------*/ .caixa1, .caixa2, .caixa3, .caixa4 { position: relative; height: 100%; opacity: 0.9; background-repeat: no-repeat; background-size: cover; background-position: center; background-attachment: fixed; } .caixa1 { background-image:url(../imagens/principal.png); } .caixa2 { background-image: url(../imagens/insetos.png); } .caixa3 { background-image: url(../imagens/logos/clientes.png); } .caixa4 { background-image: url(../imagens/equipamentos.png); } .conteudo-titulo { position: absolute; left: 0; top: 45%; width: 100%; text-align: center; } .conteudo-titulo span.titulo { color: #fff; background-color: #111; padding: 18px; font-size: 25px; letter-spacing: 5px; text-transform: uppercase; }  
      Coloquei o arquivo com a estrutura do site e o erro que aparece na url. (um css que não deveria aparecer e dá página não encontrada)
      Coisa interessante: tanto faz colocar ../imagens/foto.png  ou imagens/foto.png e funciona no local e não no servidor.
      Se alguém tiver alguma dica para eu resolver ou testar este erro, agradeço.
       
       

       

    • Por unset
      Olá, uma dúvida tenho uma classe que faz upload de imagens e cadastra no banco, como eu faço para executar uma outra classe ação função etc somente apos verificar que todo o upload dos arquivos foi realizado com sucesso?
    • Por unnameduser
      Tem alguma forma de retirar esse espaço que fica entre os links quando selecionados no CTRL + A? Isso particularmente me incomoda muito.

    • Por groudon900
      Estou com problemas, não sei como resolver, eu uso um código que nem sei o nome exato, enfim o que ele faz por mim? ele passa varias paginas dentro da minha index, sem eu precisar editar o site todo em todas as paginas segue abaixo o código
       
      <?php $pro = 'proteção'; $pag = isset($_GET['pag']) ? $_GET['pag'] : 'home'; $e = explode('/',$pag); $pg = $e[0]; if(file_exists("pags/$pg.php")){ include"pags/$pg.php"; }else{ echo '<div class="alert alert-danger"> <strong>Página Inexistente!</strong> Desculpe, mas está página não existe. </div>'; echo '<div class="alert alert-danger"> <strong>Por Favor!</strong> Selecione uma opção a partir do menu, caso este erro Persista entre em contato com a administração. </div>';} ?> é qual o meu problema? 
      meu problema é que ao chamar qualquer pagina teria que usar por exemplo( index.php?pag=editarnoticia ) até ai tudo bem!
      o problema real é que eu tenho uma tabela e aperto pra editar um usuário com id, tentei fazer todos os tipos de link, até funcionam mais não apresentam nada do ID
      por exemplo (index.php?pag=editarnoticia?id=<?php echo $row_usuario['id'] ?>) nem funciona não abre nada, tentei colocar a pagina editarnoticia com o nome de editar_noticia no .httacess então ficaria assim (editarnoticia?id=<?php echo $row_usuario['id'] ?>) até funciona chama a pagina ID mas não apresentar nada em echo referente ao id, não sei mais o que fazer, isso funciona em paginas .php normais
       

       
       
      Edit (Resolvido)
       
      Tentei alguns links e um funcionou pra mim
       
      logado?pag=editarnoticia&id=7 segue abaixo funcionando!

       
      se alguém souber como encurtar o link me avisa por favor
    • Por Anonm
      Gostaria de colocar em cada variável a ordem de um numero que o usario digitar, mas que os valores sejam absolutos e n relativos.
      Por exemplo, se o usuário colocar 110, o programa vai colocar na variável und o valor da unidade, na variável dez o valor das dezenas, e na variável cen o valor das centenas, ficando:
      und=0
      dez=1
      cen=1
      mas o limite deve ser da casa do bilhão, ou seja, o usuário pode colocar ate 9 bilhões que ainda vai colocando o valor das ordens nas variáveis.
      Como pode ser feito? 
×

Informação importante

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