بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
درس في طريقة جلب الأخبار، أتمنى أن يكون الدرس التالي نافعاً وسأحاول قدر المستطاع أن أكون واضحاً في الشرح علماً بأن هذا الدرس يقوم بإعطائك أساسيات جلب الأخبار والمفهوم النظري لسكريبتات جلب الأخبار.

أولاً: تحديد الموقع وعلامات الفصل

بطبيعة الحال أي جالب أخبار يحتاج إلى صفحة يجلب منها الخبر ولنفرض أننا نود جلب أخبار من موقع يدعى أي كلام وعنوانه:
http://www.aykalam.com

فيتوجب عليك الذهاب إلى الموقع واستعراض الشفر المصدرية وذلك باختيار :

view ثم source

لنفرض أنه بعد استعراض الشفرة المصدرية اتضح لنا أن النص المراد جلبه هو فقط امشار إليه باللون الأصفر كما في الصورة:






عندئذ تأتي العملية الصعبة وهي إيجاد علامات الفصل. والمقصود بعلامات الفصل هي العلامة المميزة -المختلفة

عن باقي العلامات- التي تفصل بين بداية الصفحة وبداية الخبر والعلامة التي تفصل بين نهاية الصفحة ونهاية الخبر .

في مثالنا البسيط هذا فإن العلامة الفاصلة الأولى هي <hr>

والعلامة الفاصلة الثانية هي: <!-- any comment -->


ثانياً: كتابة السكريبت

الآن وبعد أن حددنا الموقع والعلامات الفاصلة يأتي دور كتابة السكريبت الذي وظيفته فرز الخبر عن باقي محتويات صفحة الموقع.

دعوني في البداية أضع السكريبت كاملاً بين أيديكم ومن ثم نقوم بشرحه سطر بسطر

CODE


<?
$url = "http://www.aykalam.com";
$fp = fopen ($url,"r");
$string1 = fread($fp,1024);
$string2 = explode("<hr>", $string1);
$string3 = explode("<!-- any comment -->", $string2[1]);

echo $string3[0];
?>




كما هو معلوم أن سكريبتات php تحاط بالعلامات <? و ?> وهذا يعني أن ما بين هاتين العلامتين عبارة عن تعليمات php يجب تنفيذها.

السطر «2»:

$url = "http://www.aykalam.com";
في هذا السطر نقوم بتعريف اسم الموقع الذي نود جلب الأخبار منه وذلك في المتغير $url


السطر «3»:

$fp = fopen ($url,"r");

يقوم هذا السطر بإعداد صفحة الأخبار للقراءة

السطر «4»:

$string1 = fread($fp,1024);

يقوم هذا السطر بقراءة صفحة الأخبار وتخزينها في المتغير $string1 .. لاحظ أنه يمكنك تغيير حجم الملف المقروء 1024 حسب الرغبة بناءاً على حجم الصفحة المقروءة

::: بالخطوة السابقة يكون كل محتوى الصفحة المراد جلب الأخبار منها قد خزن في المتغير $string1

السطر «5»:

$string2 = explode("<hr>", $string1);

قبل أن نقوم بشرح هذا السطر يتوجب علينا شرح الدالة explode :

تقوم explode بفرز النص اعتماداً على المتغير الأول الممرر لها خذ مثلاً هذا المثال:

CODE
$parts=explode("%","زاجل%دائماً%في الخدمة");


سيقوم السطر السابق بتفريق الجملة "زاجل%دائماً%في الخدمة" بدلالة العلامة الفارقة % وسيقوم بتخزين النتيجة كمصفوفة في المتغير $parts كالتالي:


$parts[0]= زاجل
$parts[1]= دائماً
$parts[2]= في الخدمة

أتمنى أن تكون وظيفة explode قد وضحت الآن

نعود إلى السطر الخامس:

$string2 = explode("<hr>", $string1);

فكما أسلفنا أن محتوى الصفحة قد تم تخزينه في المتغير $string1 لذا فإننا في هذا السطر نريد عزل بداية الصفحة عن بداية الخبر بدلالة الفارق <hr> فينتج عن السطر الخامس التالي:

$string2[0] =

CODE
<html dir=rtl>
<head>
<title>أخبار</title>
</head>
<body>

<p>أي كلام</p>



$string2[1] =

CODE
<p>الأخبار العالمية:</p>
<p>* الخبر الأول<br>
* الخبر الثاني<br>
* الخبر الثالث</p>

<!-- any comment -->

<p>أي كلام</p>
<p> </p>
</body>
</html>


وما يهمنا هنا قيمة المتغير $string2[1] = لأن فيها الخبر المطلوب.

السطر «6»:

$string3 = explode("<!-- any comment -->", $string2[1]);

الآن بقى علينا أن نفصل نهاية الصفحة عن نهاية الخبر وهذا ما يقوم به السطر السادس الذي سينتج عنه التالي:

$string3[0] =

CODE
<p>الأخبار العالمية:</p>
<p>* الخبر الأول<br>
* الخبر الثاني<br>
* الخبر الثالث</p>




$string3[1] =

CODE
<p>أي كلام</p>
<p> </p>
</body>
</html>



بهذا يكون الخبر قد عزل تماماً عن باقي محتويات الصفحة وتم حفظه في المتغير $string3[0] = ويمكنم معاينة الشكل التوضيحي التالي للوقوف على طريقة فرز محتويات الصفحة والمتغيرات المستخدمة:






السطر «7»

echo $string3[0];

بكل بساطة عبارة عن أمر طباعة محتويات المتغير $string3[0] = على الشاشة والذي يحتوي بدوره الأخبار المطلوبة.

أتمنى أن أكون قد وفقت في شرح طريقة جلب الأخبار ، علماً أن هذا المثال يعد من أسهل الأمثلة في هذا المجال، حيث لا يسعنا تناول جميع الاحتمالات لأن ذلك يتطلب شرحاً لتقنيات أخرى مثل الـ Regular Expressions وما أشبه والتي تحتاج إلى مقدمات وشروح مفصلة وطويلة.


والسلام عليكم ورحمة الله وبركاته
منقول من منتديات زاجل والصور الظاهر ماهي بطالعة