I this site tüm dizin URL'leri almak istiyorum.
Ben pregmatch yaptım, ama o da gereksiz URL bağlantıları anlamına gelir, tüm site URL'sini alır.
Burada, Rendering olan my code.
Nasıl bu siteden tüm bağlantıları teslim alabilirim?
Ben bu çalıştırmayı denedim ve işe gibi görünüyor, sadece regex değişti
<?php
for($i=0;$i<=25;$i++){
$site_url = "http://www.directorymaximizer.com/index.php?pageNum_directory_list=$i";
$preg_math = file_get_contents($site_url);
$regex = '@-->(https?://[^<]*)<\!--@';
preg_match_all($regex, $preg_math, $matches, PREG_PATTERN_ORDER);
foreach($matches as $key=>$val){
if($val!="" && !is_numeric($val)){
foreach(array_unique($val) as $key1=>$val1){
if( $val1!="" && !is_numeric($val1)){
echo $val1;
echo "<br />\n";
}
}
}
}
}
Bunun için bir HTML parser isteyeceksiniz. HTML düzensiz olduğunu, bu nedenle düzenli ifadeler iyi çalışmıyor.
Düzenli bir ifade kullanmak için bu için bazı tutarlı sınırlayıcı gerekir. Neyse ki, istediğiniz URL'leri - ve sadece isteyen - kaynakta bu gibi bakmak görünüyor:
target="_blank">-->the url is here<!--</a>-->
Eğer istediğimiz normal ifade Anlamı olan:
@target="_blank">-->(?P<url>.+?)<!--</a>-->@
- Sürpriz - "url" altında endeksli ilk yakalama grup maçlarının nerede, içerecektir URL'leri. Neden adında yakalama grubu? Sadece geri kodlara baktığınızda ne yaptığınızı anlamaya daha kolay gibi görünüyor.
Ben düzenli ifade anahtarlarını yapmak için şık küçük bir araç var.
Gskinner.com at RegExr kontrol gidin.
Ayrıca ben bu sizin aradığınız model olduğuna inanıyorum. Uyumlu olması için bir çapa için etki alanı da dahil olmak üzere tam bir URL olmalıdır. Dizideki ben çıktısı URL, etki alanı ve yol. Aşağıya bakın.
preg_match ('/ http: \ / \ / (P [a-z0-9 /] + \ () + [\ w] P [\ / \ \ \ w = \ &?.] +)?.? ) [\ s \ w = "] +> / ', $ site, $ çapa);
$url = $anchors['url'];
$domain = $anchors['domain'];
$path = $anchors['path'];
Bana nasıl gidiyor bildirin. Ben bu test etmedi, yani bir hata varsa özür dilerim.