برگزیده های پرشین تولز

یه پروژه تقریبا ساده.(بهتره تحت وب و با php باشه.)

alireza9401

Registered User
تاریخ عضویت
17 اکتبر 2012
نوشته‌ها
433
لایک‌ها
331
با سلام خدمت شما برنامه نویسان عزیز.
در مورد چیزی که میخوام یکم توضیح بدم.
من به برنامه یه چند تا لینک بدم(20-25)
مثلا هر صفحه سورسش باشه :
HTML:
<a class="test">test1</a>
<a class="test">test1</a>
<a class="test">test1</a>
<a class="test">test1</a>
<a class="test">test1</a>
<a class="test">test1</a>
<a class="test">test1</a>
<a class="test">test1</a>
<a class="test">test1</a>
خوب حالا من چی میخوام من test1 ها رو میخوام.یعنی چی یعنی من کلماتی که بین دو تگ مثلا <a> و </a> با class="test" هست رو میخوام.
میخوام test1 ها رو دو بار ذخیره کنم.یه بار در دیتابیس و یه بار هم در یه فایل متنی.
امکاناتی که که میخوام حتما داشته باشه:
برنامه انعطاف پذیر باشه.یعنی چی؟
یعنی به جای <a> و </a> از <spoile> و </spoile> هم بشه استفاده کرد.
به جای class="test" از type="test" هم استفاده کرد.
نمیخواد در صفحه نمایش داده شده در مرورگر این ها رو ازم بپرسه.فقط دستکاری کدش سخت نباشه.

کد باید ساده باشه تا به عنوان پروژه آموزشی هم بشه ازش استفاده کرد.
اینکد نباشه!
این یک مناقصه است!

@aalireza439 محتاجیم به کمک شما.;)
و دوستان دیگر:
@php-pro.ir , @behzadnoor , @brand2 , @profMan , @ms313 , @majid gh , @x460 , @kimsungbabak , @SepehrR , @M O H A M M A D
@learndl
و...
 

learndl

کاربر فعال کار و سرمایه
تاریخ عضویت
3 سپتامبر 2008
نوشته‌ها
2,395
لایک‌ها
3,422
محل سکونت
کرج
سلام

با php و کلاس هایی مثل DOMDocument یا file_get_contents میتونی این کارو انجام بدی و از هر صفحه ای هر چیزی میخوای استخراج کنی
الآن سوالت این بود که با php میشه یا اینکه میخواستی خو.دت انجام بدی و دنبال راه بهتر بودی یا اینکه میخوای کسی برات انجام بده ؟
 

alireza9401

Registered User
تاریخ عضویت
17 اکتبر 2012
نوشته‌ها
433
لایک‌ها
331
سلام

با php و کلاس هایی مثل DOMDocument یا file_get_contents میتونی این کارو انجام بدی و از هر صفحه ای هر چیزی میخوای استخراج کنی
الآن سوالت این بود که با php میشه یا اینکه میخواستی خو.دت انجام بدی و دنبال راه بهتر بودی یا اینکه میخوای کسی برات انجام بده ؟
خودم نتونستم انجام بدم متاسفانه.
میخوام کسی برام انجام بده.قیمت نوشتن همچین چیزی چقدر میشه تقریبا؟
 

learndl

کاربر فعال کار و سرمایه
تاریخ عضویت
3 سپتامبر 2008
نوشته‌ها
2,395
لایک‌ها
3,422
محل سکونت
کرج
خودم نتونستم انجام بدم متاسفانه.
میخوام کسی برام انجام بده.قیمت نوشتن همچین چیزی چقدر میشه تقریبا؟
الآن اینجا جواب بدم یا پ.خ ؟ :D

قیمت که نمیشه گذاشت چون خیلی سادست و نیازی به پرداخت هزینه نداره فقط باید بشینی ببینی اولا از چه راهی میخوای استفاده کنی و دقیقا کارت چیه و اینکه میخوای در دیتابیس ذخیره بشه یا فایل txt یا ...
البته اگر بخوای در دیتابیس ذخیره بشه هر کسی برات انجام بده یه هزینه ای طبیعتا میگیره ازت
 

frox

Registered User
تاریخ عضویت
19 جولای 2009
نوشته‌ها
339
لایک‌ها
9
محل سکونت
ایران
خدمت شما
PHP:
<?php

$url = "http://www.example.net/somepage.html";
$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)) {
    // $matches[2] = array of link addresses
    // $matches[3] = array of link text - including HTML code
}

?>
 

alireza9401

Registered User
تاریخ عضویت
17 اکتبر 2012
نوشته‌ها
433
لایک‌ها
331
خدمت شما
PHP:
<?php

$url = "http://www.example.net/somepage.html";
$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)) {
    // $matches[2] = array of link addresses
    // $matches[3] = array of link text - including HTML code
}

?>
// $matches[2] = array of link addresses
// $matches[3] = array of link text - including HTML code​
???
میشه یکم توضیح بدید؟
 

frox

Registered User
تاریخ عضویت
19 جولای 2009
نوشته‌ها
339
لایک‌ها
9
محل سکونت
ایران
PHP:
<?php

$url = "http://www.example.net/somepage.html";
$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)) {
print_r($matches);
}

?>
این کد رو اجرا کنید متوجه میشید
preg_match بررسی میکنه که یه Regx برقرار هست یا نه
و اگه بر قرار باشه یه ارایه از موارد همخوان بر میگردونه
تو این مورد یه آرایه 2 بعدی برمیگردونه
بعد اول خود لینک ها هستن
بعد دوم attribute های اون ها
بعد سوم آدرس href لینک ها
و بعد چهارم هم متن داخل تگ a که میتونه یه متن ساده یا یه سری تگ html باشه

مثلا شما برای دسترسی به متن اولین لینک باید از $matches[3][0] استفاده کنید
 

alireza9401

Registered User
تاریخ عضویت
17 اکتبر 2012
نوشته‌ها
433
لایک‌ها
331
PHP:
<?php

$url = "http://www.example.net/somepage.html";
$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)) {
print_r($matches);
}

?>
این کد رو اجرا کنید متوجه میشید
preg_match بررسی میکنه که یه Regx برقرار هست یا نه
و اگه بر قرار باشه یه ارایه از موارد همخوان بر میگردونه
تو این مورد یه آرایه 2 بعدی برمیگردونه
بعد اول خود لینک ها هستن
بعد دوم attribute های اون ها
بعد سوم آدرس href لینک ها
و بعد چهارم هم متن داخل تگ a که میتونه یه متن ساده یا یه سری تگ html باشه

مثلا شما برای دسترسی به متن اولین لینک باید از $matches[3][0] استفاده کنید
تا اینجار رو گرفتم فقط نتونستم قسمتی که بهش بگم فقط <a> هایی که
HTML:
class="test"
داشته باشن رو بررسی کنه.بفهم؟:general607::general105:eek:_O:D
میشه این مورد رو هم راهنمایی کنید.:general410::general503:
آقا این آخرین سوال.;)مزاحمتون شدیم:confused:SPOILER]
 

alireza9401

Registered User
تاریخ عضویت
17 اکتبر 2012
نوشته‌ها
433
لایک‌ها
331

frox

Registered User
تاریخ عضویت
19 جولای 2009
نوشته‌ها
339
لایک‌ها
9
محل سکونت
ایران
<a\s[^>] *[class=\"test\"] *href=(\"??)([^\" >]*?)\\1[^>]*>(.*)<\/a>
 

frox

Registered User
تاریخ عضویت
19 جولای 2009
نوشته‌ها
339
لایک‌ها
9
محل سکونت
ایران
در ضمن بهتره سئوالتون رو از اول درست بفرمایید
و اگه خودتون برنامه نویسی میدونید بهتره خودتون دنبال این چیز ها باشید که در موارد مشابه یاد داشته باشید
 

alireza9401

Registered User
تاریخ عضویت
17 اکتبر 2012
نوشته‌ها
433
لایک‌ها
331

behzadnoor

Registered User
تاریخ عضویت
5 مارس 2005
نوشته‌ها
1,886
لایک‌ها
287
محل سکونت
×زیر چتر سبز×
برای یک کار اصولی از curl استفاده کنید . اینجا یک معرفی و آموزش پایه ازش هست . به نمونه کد زیر دقت کن .

PHP:
<?
    $request_url ='http://www.qualitycodes.com';
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $request_url);    // The url to get links from
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);    // We want to get the respone
    $result = curl_exec($ch);
    $regex='|<a.*?href="(.*?)"|';
    preg_match_all($regex,$result,$parts);
    $links=$parts[1];
    foreach($links as $link){
        echo $link."<br>";
    }
    curl_close($ch);
?>
 

alireza9401

Registered User
تاریخ عضویت
17 اکتبر 2012
نوشته‌ها
433
لایک‌ها
331
برای یک کار اصولی از curl استفاده کنید . اینجا یک معرفی و آموزش پایه ازش هست . به نمونه کد زیر دقت کن .

PHP:
<?
    $request_url ='http://www.qualitycodes.com';
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $request_url);    // The url to get links from
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);    // We want to get the respone
    $result = curl_exec($ch);
    $regex='|<a.*?href="(.*?)"|';
    preg_match_all($regex,$result,$parts);
    $links=$parts[1];
    foreach($links as $link){
        echo $link."<br>";
    }
    curl_close($ch);
?>
ممنون.
ولی این کدی که دادید برای چیزی که من میخوام میتونه استفاده بشه؟
 

behzadnoor

Registered User
تاریخ عضویت
5 مارس 2005
نوشته‌ها
1,886
لایک‌ها
287
محل سکونت
×زیر چتر سبز×
ممنون.
ولی این کدی که دادید برای چیزی که من میخوام میتونه استفاده بشه؟
بله میتونید جوری regex رو تنظیم کنید که فقط لینک ها رو با کلاس ها یا ایدی های خاص بخونه .
 

alireza9401

Registered User
تاریخ عضویت
17 اکتبر 2012
نوشته‌ها
433
لایک‌ها
331
بله میتونید جوری regex رو تنظیم کنید که فقط لینک ها رو با کلاس ها یا ایدی های خاص بخونه .
من از صبح درگیر همینم نمیتونم regex رو تغییر بدم.
میخوام به این شکل باشه.
اگر <a> کلاسی با نام تست داشته باشه متن لینک (متنی که بین <a> و </a> هست)رو بگیره.
نه آدرس لینک رو میخوام نه چیز دیگه ای.ممنون میشم این چیزی رو گفتم رو برام بنویسید(1 خط)
خودم یه همچین چیزی گذاشتم ولی اشتباهه
PHP:
  $regex='|<a .class="(.test)">(.*)</a>'
 

behzadnoor

Registered User
تاریخ عضویت
5 مارس 2005
نوشته‌ها
1,886
لایک‌ها
287
محل سکونت
×زیر چتر سبز×
من از صبح درگیر همینم نمیتونم regex رو تغییر بدم.
میخوام به این شکل باشه.
اگر <a> کلاسی با نام تست داشته باشه متن لینک (متنی که بین <a> و </a> هست)رو بگیره.
نه آدرس لینک رو میخوام نه چیز دیگه ای.ممنون میشم این چیزی رو گفتم رو برام بنویسید(1 خط)
خودم یه همچین چیزی گذاشتم ولی اشتباهه
PHP:
  $regex='|<a .class="(.test)">(.*)</a>'

اینجا رو مطالعه کنید
 

alireza9401

Registered User
تاریخ عضویت
17 اکتبر 2012
نوشته‌ها
433
لایک‌ها
331
بالا