مشکل با تابع preg

سلام,
من با کد زیر لیست وبلاگهای بلاگفا رو میگیرم:
PHP:
<?php
$filename='http://blogfa.com/members/Updated.aspx';
$content=file_get_contents($filename);
echo '<p dir="rtl">';
preg('/.*[^www][^news][\.]blogfa\.com/',$content,$result);
print_r($result);
echo '</p>';
?>
ولی این کد تمام تگ های <a></a> رو نمایش میده.
میشه من رو راهنمایی کنید که چه طور فقط ادرس وبلاگ ها رو بصورت name.blogfa.com بگیرم???
البته خط به خط. یعنی هر خط یک ادرس.
 

neopersia

Member
سلام,
من با کد زیر لیست وبلاگهای بلاگفا رو میگیرم:
PHP:
<?php
$filename='http://blogfa.com/members/Updated.aspx';
$content=file_get_contents($filename);
echo '<p dir="rtl">';
preg('/.*[^www][^news][\.]blogfa\.com/',$content,$result);
print_r($result);
echo '</p>';
?>
ولی این کد تمام تگ های <a></a> رو نمایش میده.
میشه من رو راهنمایی کنید که چه طور فقط ادرس وبلاگ ها رو بصورت name.blogfa.com بگیرم???
البته خط به خط. یعنی هر خط یک ادرس.

امکان این هست که نفی www و news رو وارد الگوی رجکس کرد ولی این الگو رو زیادی سنگین میکنه مخصوصاً اینکه متن همه صفحه رو با هم باید پردازش کنه
فکر میکنم این کد کاری رو که میخواید انجام بده:
PHP:
$str = file_get_contents('http://blogfa.com/members/Updated.aspx');

preg_match_all("@[a-zA-Z0-9\-_]+\.blogfa\.com@", $str, $matches);

$result = array_unique($matches[0]);

unset(
	$result[array_search('www.blogfa.com', $result)],
	$result[array_search('news.blogfa.com', $result)]
);

print_r($result);
 
آخرین ویرایش:
سلام
ممنون از جوابتون،
1--چه طور امكان داره كه يك متن رو تو يه متن ديگه جستجو كرد؟ يعني مثلا ما يك متن داريم، قصد داريم بدونيم كه يك كلمه به خصوص داخل متن هست يا نه. فقط متن رو جستجو كنيم، ببينيم وجود داره يا نه؟؟؟
2--يك سوال هم در مورد كتابخانه cUrl داشتم.
PHP:
<?php
$ch = curl_init("http://example.ir/folder/post.php");
curl_setpot($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,id=kurosh&name=iran);\
curl_exec($ch);
curl_close($ch);
?>
كد بالا دو مقدار به فايل post.php ارسال ميكنه و بعد هم نتيجه رو نمايش ميده. يعني مقدار ها توسط فايل post.php پردازش ميشن و اين فايل هم نتيجه رو ميده. حالا نميشه كاري كرد كه مقدار ها به ارسال بشن اما صفحه اي كه فايل post.php ميده رو نمايش نداد.
سوال قبلي بنده هم به همين سوال مربوط ميشه... يعني ما در صفحه اي كه فايل post.php به عنوان پاسخ فرستاده فقط يك جستجو كنيم و صفحه رو نمايش نديم.
با سپاس
 
آخرین ویرایش:

neopersia

Member
در مورد سوال اول چند تا روش هست. میتونی با توابع رجکس مثل preg_match یا egerg و eregi با یک الگوی ساده متن رو جستجو کنی اگر پیدا کنه true بر میگردونه
اگر هم که یک کلمه ساده هست که میخوای چک کنی میشه با strpos موقعیتش رو چک کرد اگز بزرگتر مساوی صفر باشه یعنی که اون کلمه توی منت وجود داره


در مورد سوال دومتون درست متوجه نمیشم. curl_exec به صورت عادی محتوای فایل رو نباید نشون بده مگر اینکه پارامترش ست بشه!
 
دوست عزيز! ما براي اينكه اطلاعاتي رو با روش post بفرستيم، نياز داريم تا CURLOPT_URL رو ست كنيم. و وقتي كه اطلاعات ارسال شد يك فايل PHP به عنوان نتيجه براي ما ارسال ميشه... مثلا ما وقتي كه اطلاعات رو درقسمت نظرات وبلاگ با روش POST ارسال ميكنيم، يك پيغام نمايش داده ميشه كه ميگه "نظر شما ارسال شد". حالا چه طور ميشه به جاي اينكه پيغام يا صفحه نمايش داده بشه اون رو در يك متغير ذخيره كرد و عمليات مورد نظر رو روش انجام داد؟ ؟ ؟ ؟ ؟
 

aminsm

New Member
سلام آقای کورروش پارسی.
احتمالا از اسمم شناختین من کیم.
من صاحب اسکریپت ارسال انبوه کامنت به وبلاگها هستم.
می‌خواستم بگم وقتتو رو بلاگفا تلف نکن که بعد از چند ارسال پیاپی ip سرورتو بلاک میکنه که مجبوری از پ ر و ک س ی استفاده کنی که اونم مثل ip سرورت از طرف فایروال بلاگفا بلاک خواهد شد.
 

neopersia

Member
دوست عزيز! ما براي اينكه اطلاعاتي رو با روش post بفرستيم، نياز داريم تا CURLOPT_URL رو ست كنيم. و وقتي كه اطلاعات ارسال شد يك فايل PHP به عنوان نتيجه براي ما ارسال ميشه... مثلا ما وقتي كه اطلاعات رو درقسمت نظرات وبلاگ با روش POST ارسال ميكنيم، يك پيغام نمايش داده ميشه كه ميگه "نظر شما ارسال شد". حالا چه طور ميشه به جاي اينكه پيغام يا صفحه نمايش داده بشه اون رو در يك متغير ذخيره كرد و عمليات مورد نظر رو روش انجام داد؟ ؟ ؟ ؟ ؟
اگر پارامتر زیر رو برای curl تنظیم کنید متن برگشتی سرور رو باید برگردونه:
PHP:
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
...
...
...
$output = curl_exec($ch);

بعد راحت میتونید چک کنید ببینید متن مورد نظرتون توی استرینگ برگشتی وجود داره یا نه:
PHP:
if(strpos($output, 'متن مورد نظر') !== false) {
    // success
}

البته احتمالاً مواردی پیش خواهد اومد که باید برای اونا آماده بشید! مثلاً من تست نکردم ببینم اگر صفحه بعد از ارسال پست ریدایرکت بشه چطور میشه. البته به در تئوری curl هدر ها رو دنبال میکنه و ریدایرکت میشه اما باید در عمل تست کرد!
دوستمون هم درست میگه اگر تعداد درخواست زیاد در زمان کم به سروری فرستاده بشه ممکنه IP شما به عنوان اسپمر یا حمله DOS بلوکه بشه.
 
سلام آقای کورروش پارسی.
احتمالا از اسمم شناختین من کیم.
من صاحب اسکریپت ارسال انبوه کامنت به وبلاگها هستم.
می‌خواستم بگم وقتتو رو بلاگفا تلف نکن که بعد از چند ارسال پیاپی ip سرورتو بلاک میکنه که مجبوری از پ ر و ک س ی استفاده کنی که اونم مثل ip سرورت از طرف فایروال بلاگفا بلاک خواهد شد.
سلام
اقاي امين امكان داره كه در ساخت اين اسكريپت به من كمك كنيد؟‌؟‌ ؟؟‌ ؟؟
البته من بيشتره كار ها رو انجام دادم. مثل: دريافت ليست وبلاگهاي بروز شده، ... رفتن به قسمت نظرات اخرين پست ارسال شده و .......... -- و فقط در ارسال اطلاعات مشكل دارم. البته ادرس action به صورتي هست كه عوض ميشه... و من هم ادرس action رو بدست اوردم. همان طور كه گفتم فقط در ارسال اطلاعات مشكل دارم. زماني كه اطلاعات رو ارسال ميكنم، پيام زير رو نمايش ميده:
صفحه مورد نظر شما در اين وبلاگ وجود ندارد...
مشكلش چيه؟ ؟ ؟ ؟ من كه آدرس action رو درست گرفتم!؟ يك ايميل هم براتون فرستادم... ايميل من: Admin {at} jscode {dot} ir
من با ميهن بلاگ كار ميكنم... ممنون ميشم اگه جواب من رو بديد! اگه اينجا مشكلي هست ميتونيد با پيام خصوصي يا ايميل در ارتباط باشيم
 

aminsm

New Member
احتمالا تو ارسال اطلاعات، متن کامنتتون یک سری علائمی داره که قابل ارسال به صورت عادی نیست و باید کد بشن.
متنتون رو که تو postfields قرار میدین ابتدا با تابع urlencode کد کنین بعد بفرستین ببینین درست میشه.
 

جدیدترین ارسال ها

بالا