Nasıl php URL'lerin bir blok bilgi ayıklamak?

3 Cevap php

Ben herhangi bir biçimde gelebilir URL'ler bir liste var. Virgülle ayırarak her satıra bir, URL'ler 2 farklı sitelerden hepsi, ve benzer bir yapıya sahip, vb aralarında rasgele metin var

Bu örnek için, bu gibi görünüyor Diyelim

Random Text - http://www.domain2.com/variable-value
Random Text 2 - http://www.domain1.com/variable-value, http://www.domain1.com/variable-value, http://www.domain1.com/variable-value

http://www.domain1.com/variable-value
http://www.domain2.com/variable-value
http://www.domain1.com/variable-value http://www.domain2.com/variable-value http://www.domain1.com/variable-value

Ben bilgi 2 adet ayıklamak gerekir. Onun domain1 veya etkialanı2 ve value Bu "değişken" izler olmadığını görmek için kontrol edin

Domain + değeri: Yani 2 öğe olurdu çok boyutlu bir dizi oluşturmak gerekir.

Nedir yapmanın en iyi yolu?

3 Cevap

Bu adresler açılan bir olasılıktır. Tek sorun adresler kendisi virgül içeremez olmasıdır. Yani eğer yeterli ....

$lines = explode('\n', $urls);

for($i = 0; $i < sizeof($lines); $i++)
{
    if(preg_match_all("http:\\/\\/[^,]*variable-([^,]+)", $lines[$i], $matches))
    {

    }
}

Bu arada ... karşılaşmalar $matches dizi içinde saklanır.

Ps: i ters eğik çizgi kaçış unuttum ve http://www.regex-tester.de/regex.html ... bu sadece benim regex çalıştım de regex ... Doğru bir davranış sağlamak için hat için dize hattını aramak gerekir ... Düzenlendi .

PPS: ileri araştırmaların sonra ben bu sayfa bulundu: http://internet.ls-la.net/folklore/url-regexpr.html. Bir url için düzenli ifade içerir. Eğer URL'ler geçmesi ve örneğin arıyor değişken bilgileri ayıklamak ilk ve ikinci aşamada adresler ayıklamak için kullanabilirsiniz variable-([\W]+).

preg_split, preg_match, parse_url

// split urls
$urls = preg_split('!,\s+!', 'http://www.domain1.com/variable-value, http://www.domain2.com/variable-value, http://www.domain3.com/variable-value');

// check for domain and path variable
foreach ($urls as $url) {

    $parts = parse_url($url);
    // check domain: $parts['host'];
    $matches = array();
    // check path: preg_match('!^/variable-([^/]+)!', $parts['path'], $matches)
}
$text = "http://www.domain1.com/variable-value1, http://www.domain2.com/variable-value2 http://www.domain1.com/variable-value3";
preg_match_all("/http:\\/\\/(.+?)\\/variable-([a-z0-9]+)/si", $text, $matches);
print_r($matches);

Sonuç:

Array
(
    [0] => Array
        (
            [0] => http://www.domain1.com/variable-value1
            [1] => http://www.domain2.com/variable-value2
            [2] => http://www.domain1.com/variable-value3
        )

    [1] => Array
        (
            [0] => www.domain1.com
            [1] => www.domain2.com
            [2] => www.domain1.com
        )

    [2] => Array
        (
            [0] => value1
            [1] => value2
            [2] => value3
        )

)