PDA

View Full Version : راهنمایی در استفاده از تابع preg_match_all ؟



siamakb
دوشنبه 13 خرداد 1392, 11:09 صبح
سلام به همه دوستان.
امیدوارم خوب باشید.
کدی رو جهت پیدا کردن لینک در متن نوشتم که به درستی کار نمی کنه.قرار هست در این کد لینک هایی که با


<a href=

شروع میشه و WWW ندارد در یک آرایه ریخته بشه.


<?php
$text='This is test URL <a href="http://barnamenevis.org" or <a href="http://www.barnamenevis.org"';
preg_match_all('/<a href="(.*?)"/', $text, $matches);
print_r($matches);

?>




متاسفانه خرجی این کد تمامی لینک های href می باشد و نتوانستم فقط لینک های بدون WWW رو پیدا کنم.
لطفا راهنمایی بفرمائید.

siamakb
دوشنبه 13 خرداد 1392, 15:44 عصر
لطفا راهنمایی بفرمائید.

ravand
دوشنبه 13 خرداد 1392, 17:07 عصر
<?PHP
$url = "http://pachenar.ir/index.php";
$input = file_get_contents($url) or die("Could not access file: $url");
$regexp = "<a\s[^>]*href=(\"??)([^\" >]*?)\\1[^>]*>(.*)<\/a>";
if(preg_match_all("/$regexp/siU", $input, $matches, PREG_SET_ORDER)) {
foreach($matches as $match) {
//نمایش لینک
echo $match[0]."<br>";
//نمایش ادرس لینک
echo $match[2]."<br>";
//نمایش عنوان لینک
echo $match[3]."<br>";
// $match[2] = link address
// $match[3] = link text
}
}
?>

siamakb
دوشنبه 13 خرداد 1392, 18:15 عصر
<?PHP
$url = "http://pachenar.ir/index.php";
$input = file_get_contents($url) or die("Could not access file: $url");
$regexp = "<a\s[^>]*href=(\"??)([^\" >]*?)\\1[^>]*>(.*)<\/a>";
if(preg_match_all("/$regexp/siU", $input, $matches, PREG_SET_ORDER)) {
foreach($matches as $match) {
//نمایش لینک
echo $match[0]."<br>";
//نمایش ادرس لینک
echo $match[2]."<br>";
//نمایش عنوان لینک
echo $match[3]."<br>";
// $match[2] = link address
// $match[3] = link text
}
}
?>

ممنون از لطفتون.
متاسفانه این کد تمامی آدرس ها چه با WWW یا بدون WWW همراه با توضیحات نشان میدهد.

mostafa272
سه شنبه 21 خرداد 1392, 10:17 صبح
$text='This is test URL <a href="http://barnamenevis.org" or <a href="http://www.barnamenevis.org" or <a href="http://wiki.org"';
preg_match_all('/<a href="http:\/\/(www..*?)"/', $text, $matches,PREG_SET_ORDER);
preg_match_all('/<a href="http:\/\/(.*?)"/', $text, $matches1,PREG_SET_ORDER);
foreach($matches as $temp )
{
foreach($matches1 as $temp1 )
{
if($temp[1]!=$temp1[1])
echo $temp1[1].",";
}
}

رضا قربانی
چهارشنبه 22 خرداد 1392, 10:29 صبح
شاید اینجا کمکتون کرد :
http://barnamenevis.org/showthread.php?358191-%D8%AF%D9%86%DB%8C%D8%A7%DB%8C-%D8%B1%DA%AF%D9%88%D9%84%D8%A7%D8%B1-%D8%A7%DA%A9%D8%B3%D9%BE%D8%B1%D8%B4%D9%86-Regular-expression