Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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](http://site.com.br/link)" target="_blank" class="title" title="linktitulo">LINK 01</a>
<a href="[http://site.com.br/link](http://site.com.br/link)" target="_blank" class="title" title="linktitulo">LINK 04</a>
<a href="[http://site.com.br/link2](http://site.com.br/link2)" target="_blank" class="title" title="linktitulo">LINK 02</a>
<a href="[http://site.com.br/link](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](http://site.com.br/link)" target="_blank" class="title" title="linktitulo">LINK 01</a>
<a href="[http://site.com.br/link2](http://site.com.br/link2)" target="_blank" class="title" title="linktitulo">LINK 02</a>
<a href="[http://site.com.br/link](http://site.com.br/link)" target="_blank" class="title" title="linktitulo">LINK 03</a>
<a href="[http://site.com.br/link](http://site.com.br/link)" target="_blank" class="title" title="linktitulo">LINK 04</a>
Alguém me dá uma luz?
ih cliquei no botao errado
É a sort() que coloca os dados em ascendente.. O problema que não sei como pegar o nome do link e ordenar e por de volta com os respectivos links!
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](http://site.com.br/link)" target="_blank" class="title" title="linktitulo">bco 02</a>',
'<a href="[http://site.com.br/link](http://site.com.br/link)" target="_blank" class="title" title="linktitulo">caco 03</a>',
'<a href="[http://site.com.br/link](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);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](http://google.com) )
Array ( [facebook] => [http://www.facebook.com](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..
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);
?>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;
?>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.
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!
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