Regex ile ayrıştırma sonra yinelenen dizisi girdileri Başlarken

4 Cevap php

Ben Rapidshare linkleri için bir sayfayı kontrol edin ve bir diziye bunları yüklemek için benim PHP komut regex kullanıyorum.

Benim kod:

if(preg_match_all('/http:\/\/rapidshare\.com\/files\/.*?\/[^\s]+/', $links[0], $links))
{
    print_r($links);
} else {
    die('Cannot find post links :(');
}

Bu doğru bağlantıları bulur, ve bir diziye koyar:

Array
(
    [0] => Array
        (
            [0] => http://rapidshare.com/files/320708377/file_name1.rar
            [1] => http://rapidshare.com/files/320708377/file_name1.rar
            [2] => http://rapidshare.com/files/333708133/file_name2.rar
            [3] => http://rapidshare.com/files/333708133/file_name2.rar
            [4] => http://rapidshare.com/files/330738827/file_name3.rar
            [5] => http://rapidshare.com/files/330738827/file_name3.rar
        )

)

Gördüğünüz gibi, her biri için diziye iki bağlantıları girer. Ben hiçbir ipucu neden bu yapıyor var ama regex ile ilgili bir şey sanıyorum.

Herhangi bir yardım? Şerefe. :)

4 Cevap

Sadece kayıt için:

$array = array_unique($values); 

Bu .. gerçi çok boyutlu diziler için çalışmaz böylece ilk dizi aracılığıyla for each olurdu.

preg_match_all () sihirli URL'ler çoğaltmak değil, onlar 2 kere her meydana gerekir. Eğer HTML bir dize regex kullanarak musunuz? Ben varsa bir <a> hem href ve fiili bağlantı metni yakalayan konum etiketlemek şüpheli:

<a href="http://www.example.com">http://www.example.com</a>

sigh, bir köprü çünkü Olur ve bunun için yükler URL ve bağlantı metni kapma oluyor.

preg-match-all Can subject and matches not using same variable name?

Bu çok kafa karıştırıcı.

Ayrıca. bizi $ bağlantıların içerik vermek