نظرة سريعة على مجريات يوم سوالف
الفائزون في المسابقة الأصغر لسوالف كاست

 

العودة   سوالف سوفت > قسم تطوير وبرمجة المواقع للمتقدمين > PHP
المدوّنات البحث مشاركات اليوم اجعل كافة المشاركات مقروءة

رد
 
LinkBack أدوات الموضوع
عضو فعال
تاريخ التسجيل: Aug 2005-
#1 (permalink)  
[شرح] الحصول على معلومات وسم Meta من صفحة أخرى ..


بسم الله الرحمن الرحيم

الحمدلله ، والصلاة والسلام على رسول الله ، محمد بن عبدالله ، وبعد ؛

إخوتي أعضاء سوالف سوفت معلمين ومتعلمين .. أحببت أن أقدم شيئاً حيث أني لم أقدم شيء لهذا الموقع الغالي الذي قدم لي الكثير ...

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

سوف أشرح القليل عن دالة get_meta_tags ثم نتطرق إلى مثال بسيط بإذن الله تعالى ..

في البداية هذه الدالة ظهرت في PHP 3 منذ الإصدارة 3.0.4 وبقيت في PHP 4 ولا تزال في PHP 5 ..

وظيفة هذه الدالة هي إعادة مصفوفة تحتوي على خصائص وسوم meta من ملف معين ..

صيغة الدالة العامة هي:
كود PHP:
array get_meta_tags string filename [, bool use_include_path] ) 
حيث filename هو عنوان الملف الذي تريد جلب معلومات وسوم meta فيه .. وفي الوسوم التي توجد في الهيدر لتعريف بعض الأمور الخاصة بالصفحة .. ويمكن ان يكون الملف محلي ( ضمن نطاق السيرفر الذي تعمل عليه ) .. أو صفحة انترنت خارج نطاق السيرفر ...
سوف يتم فتح هذا الملف وطباعة محتوياته سطراً سطراً من اسطر وسوم meta انتهاءً بوسم الإغلاق للهيد ..
كود PHP:
</head
اما الباراميتر الثاني use_include_path والذي هو من نوع منطقي Boolean كما هو واضح في الصيغة العامة للدالة .. فإنه لو كان TRUE فسوف يتم تضمين الملف من مسار مجلد التضمين الأساسي في البي إتش بي .. للمزيد يمكنك الاطلاع على اعدادات البي اتش بي بخصوص هذا الاعداد:
http://www.php.net/manual/en/ini.cor...i.include-path

لنفرض أنه لدينا وسوم ميتا التالية:
كود PHP:
<meta name="author" content="name">
<
meta name="keywords" content="php documentation">
<
meta name="DESCRIPTION" content="a php manual">
<
meta name="geo.position" content="49.33;-86.59">
</
head> <!-- هنا تتوقف عملية سحب البيانات --> 
قيمة الخاصية name في وسم الميتا سيتم اخذها على اساس انها مفتاح للعنصر في تلك المصفوفة .. فكل عنصر يتكون من المفتاح ( اسم الميتا تاج ) .. وقيمة هذا العنصر هي قيمة الخاصبة content للميتا تاج ..
إذا كان هناك أكثر من وسم ميتا يتضمن نفس قيمة الخاصية name فسيتم إعادة قيم الوسم الأخير فقط ..!

ملاحظة مهمة: جميع الرموز الخاصة في قيمة اسم الميتا تاج يتم تحويلها إلى "_" .. اما باقي الاحرف فيتم تحويلها الى lowercase ( حروف صغيرة ) ..

لنأخذ مثال بسيط يقوم بطباعة محتويات وسوم الميتا في المثال السابق بعد افتراض تخزين الملف السابق باسم test.html في نفس مسار الملف الذي سوف تنشئه الان :
كود PHP:
<?php

$meta 
get_meta_tags('test.html'); // تنفيذ الدالة بحيث يصبح المتغير عبارة عن مصفوفة تحتوي على القيم التي ذكرناها سابقاً

// لاحظ هنا كيف اصبحت جميعها حروف صغيرة واستبدلت "." بـ "_"
echo $tags['author'];      // name
echo $tags['keywords'];    // php documentation
echo $tags['description'];  // a php manual
echo $tags['geo_position']; // 49.33;-86.59
?>
الآن دعونا نفكر أكثر .. لو أردنا مثلاً تفحص موقع معين لمعرفة هل هو يستخدم vBulletin مثلاً والحصول على إصدار نسخته .. ماذا سنفعل عندها ؟؟
تأمل في الكود التالي قليلاً :
كود PHP:
<?php

$url 
"http://www.vbulletin.com/forum";

$meta get_meta_tags($url);
while (list(
$key$value) = each($meta)) {
    if (
$key == "generator" && preg_match("/^vBulletin/si"trim($value))) {
        echo 
'<span dir="rtl">هذا الموقع يعتمد على برنامج vBulletin الإصدار'trim(preg_replace("/vbulletin/si"""$value)) .'</span>';
    } else {
        echo 
'<span dir="rtl">لا يستخدم vBulletin.</span>';
    }
}

?>
لو فكرت قليلاً لوجدتنا حددنا عنوان الموقع وهو http://www.vbulletin.com/forum في البداية في متغير قمنا بتسميته url$ ...
ثم جلبنا إلى المتغير meta$ مصفوفة بمعلومات ميتا تاج في تلك الصفحة ...
بعدها بدأنا بتفريغ محتويات تلك المصفوفة بواسطة حلقة while مستخدمين دالة list التي قمت بشرح كيفية استخدامها في 09-01-2006 في الرابط التالي:
http://www.swalif.net/softs/showthread.php?t=144215

وتأكدنا من ان المفتاح key وهو كما ذكرت سابقاً نفس خاصية name في الميتا نفسها .. لذلك فسنضعه نفسه مع جعل الاحرف صغيرة واستبدال الرموز الخاصة بـ "_" .. تأكدنا انه generator حيث هناك يقوم منتدى vBulletin بطباعة النسخة والاصدار ..

وتأكدنا ان المتغير يحتوي على vBulletin في بدايته ثم طبعنا الاصدار بحذف كلمة vBulletin من خاصية content التي جعلناها هنا ( value$ ) وطبعنا رقم الاصدار بعد حذف المسافات البيضاء قبله وبعده ..

وان لم يكن vBulletin بعدها سيطبع انه ليس vBulletin ...

أعتقد أن هذا المثال واضح .. ان شاء الله تعالى ..

أما ان كنت تريد الحصول على وسم اخر ليس meta فقد وجدت في المانيوال شخصاً قد كتب هذا الكود وبالطبع يمكن تعديله او استخدام اكودا اخرى تفي بالغرض حيث أنه فقط للمساعدة:
كود PHP:
<?php

$page 
"http://www.mysite.com/apage.php";

   
// tags
   
$start '<atag>';
   
$end '<\/atag>';

   
// open the file
   
$fp fopen$page'r' );

   
$cont "";

   
// read the contents
   
while( !feof$fp ) ) {
       
$buf trimfgets$fp4096 ) );
       
$cont .= $buf;
   }
   
   
// get tag contents
   
preg_match"/$start(.*)$end/s"$cont$match );

   
// tag contents
   
$contents $match]; 

?>
أتمنى أن يكون أي شخص قد استفاد حتى لو القليل من هذا الدرس .. وانتظروني مرة اخرى في دروس اخرى ان شاء الله تعالى
تحياتي، sBForum






__________________
أحمد أبو النصر
Junior php Developer
+20166196074
أحمد أبو النصر غير متواجد حالياً   قديم 11-01-2007, 01:50 PM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: Sep 2006-
#2 (permalink)  

اهلا بك يا أشرف ..
و درس جميل نتمنى أن لا تنقطع ...






__________________
سبحان الله وبحمده سبحان الله العظيم
الفايق غير متواجد حالياً   قديم 11-01-2007, 03:16 PM
رد مع اقتباس
عضو فعال
تاريخ التسجيل: Aug 2005-
#3 (permalink)  

اهلاً بك فيصل وشكراً لردك ... واعذرني عالتقصير






__________________
أحمد أبو النصر
Junior php Developer
+20166196074
أحمد أبو النصر غير متواجد حالياً   قديم 11-01-2007, 04:00 PM
رد مع اقتباس
Banned
تاريخ التسجيل: May 2006-
#4 (permalink)  

والله العظيم حاولت أفهم وقريت الموضوع 3 مرات .. وما فهمت
مدري يمكن عشان الشرح خاص للمحترفين والفاهيمن في المصفوفات والكلام الي قلته






CodeR X غير متواجد حالياً   قديم 11-01-2007, 04:52 PM
رد مع اقتباس
عضو فعال جدا
تاريخ التسجيل: Jun 2003-
#5 (permalink)  

اهلا بك أشرف شرح رائع ... ننتظر المزيد .






__________________
إميل سعودي مجاني

htaccess بكل بساطة

الشفرة الموحدة "يونِكود"

(إن من مفاسد هذه الحضارة أنها تسمي الاحتيال ذكاءً، والانحلال حرية، و"الرذيلة فناً" والاستغلال معونة) - مصطفى السباعي
jadweb.com غير متواجد حالياً   قديم 11-01-2007, 05:47 PM
رد مع اقتباس
عضو فعال
تاريخ التسجيل: Aug 2005-
#6 (permalink)  

اخ CodeR X احنا هنا لتبادل المعلومات ما في مشكلة ان شاء الله بشرحه بطريقة اخرى او بشرح المصفوفات اذا لقيت وقت وشكراً لمرورك وتعقيبك

jadweb.com من زمان عنك يا اخي .. شكراً لمرورك وتعقيبك

تحياتي، sBForum






__________________
أحمد أبو النصر
Junior php Developer
+20166196074
أحمد أبو النصر غير متواجد حالياً   قديم 11-01-2007, 07:10 PM
رد مع اقتباس
عضو سوبر نشيط
تاريخ التسجيل: Apr 2006-
#7 (permalink)  

بارك الله فيك اخي نتمنى منك المزيد.. دروسك حلوة






عبد الواحد البشيري غير متواجد حالياً   قديم 11-01-2007, 09:45 PM
رد مع اقتباس
عضو فعال
تاريخ التسجيل: Aug 2005-
#8 (permalink)  

حياك الله اخي Nadorino أتمنى ان تكون قد استفدت واستمتعت في الدروس .. واسمحلي لتقصيري :$






__________________
أحمد أبو النصر
Junior php Developer
+20166196074
أحمد أبو النصر غير متواجد حالياً   قديم 11-01-2007, 09:59 PM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: Sep 2006-
#9 (permalink)  

كلمة مبدع قليلة بحقك استاذ أشرف ..

لكن سؤالي هل هي تفرق بين

<meta> الشكل الغير قياسي.

و

<meta />

?






__________________
موقع رياض القرآن متخصص بالقرآن الكريم
WwW.Ryadh-Quran.NeT
لمراسلتي
رياض القرآن غير متواجد حالياً   قديم 11-01-2007, 11:43 PM
رد مع اقتباس
عضو فعال
تاريخ التسجيل: Feb 2002-
#10 (permalink)  

sBForum حمد لله على السلامة .. لك مدة غائب .. أسعدتني عودتك أخي

ودرس جميل تشكر عليه .. ولدي سؤال إذا سمحت .. عند القراءة من موقع معين لأدرجها بموقعي مثلا .. أصادف أحيانا مشكلة في وسوم الهتمل لأنها تتشابك مع وسوم الهتمل بموقعي وممكن تلعب بالتصميم .. فمثلا وسوم التيبل والصفوف والخلايا التي أقرأها من ذلك الموقع سيتم تفعيلها على وسوم التيبل عندي بالموقع وتتسبب في تشويه الجداول لدي

هل من طريقة لقراءة أجزاء معينة من المواقع دون الهتمل ؟






__________________
ومامن كاتب إلا سيفنى ****** ويبقي الدهر ماكتبت يداه
فلا تكتب بكفك غير شيء ****** يسرك يوم القيامة أن تراه
Dr.Server غير متواجد حالياً   قديم 12-01-2007, 02:46 AM
رد مع اقتباس
عضو فعال
تاريخ التسجيل: Aug 2005-
#11 (permalink)  

اقتباس:
المشاركة الأصلية كتبت بواسطة رياض القرآن
كلمة مبدع قليلة بحقك استاذ أشرف ..

لكن سؤالي هل هي تفرق بين

<meta> الشكل الغير قياسي.

و

<meta />

?
تسلم اخي رياض القرآن وانتو اهل سوالف المبدعين دايماً ..
حقيقة لم أجرب ذلك .. لكن في الوضع العادي يفترض أنها تجلب كل تلك المعلومات سواء من وسم <meta> في HTML أو من وسم <meta /> في XHTML ... لأنها كلها وسوم Meta واساسية في كل تلك البيئات .... شكراً لردك وتعقيبك عزيزي ..

اقتباس:
sBForum حمد لله على السلامة .. لك مدة غائب .. أسعدتني عودتك أخي

ودرس جميل تشكر عليه .. ولدي سؤال إذا سمحت .. عند القراءة من موقع معين لأدرجها بموقعي مثلا .. أصادف أحيانا مشكلة في وسوم الهتمل لأنها تتشابك مع وسوم الهتمل بموقعي وممكن تلعب بالتصميم .. فمثلا وسوم التيبل والصفوف والخلايا التي أقرأها من ذلك الموقع سيتم تفعيلها على وسوم التيبل عندي بالموقع وتتسبب في تشويه الجداول لدي

هل من طريقة لقراءة أجزاء معينة من المواقع دون الهتمل ؟
أشكرك لردك والله يسلمك اخي Dr.Server .. وانا اسعد بالعودة إلى أهلي في سوالف ..
اخي هناك طرق لقراءة البيانات وطباعة جزء منها فقط .. عن طريق تحديد الاجزاء التي تريدها بتقسيم المتغير الذي تم تخزين ما جلبته به بواسطة دالة explode وتحديد نقطة بداية التقسيم وتقسيمه مرة اخرى بحيث تأخذ الجزء الذي تريده فقط .. هذه هي آلية عمل الفكرة التي تريدها كما أعتقد .. إذا أحببت أن أضع شرح موسع انا تحت امرك .. مع انه هناك موضوع في سوالف يشرح تلك الطريقة خلال مثال لأحد الأعضاء جزاه الله خيراً .. إذا لقيت الموضوع في طريقي بجيبلك اياه ان شاء الله تعالى ..

اعذروني على الاطالة
تحياتي، sBForum






__________________
أحمد أبو النصر
Junior php Developer
+20166196074
أحمد أبو النصر غير متواجد حالياً   قديم 12-01-2007, 11:39 AM
رد مع اقتباس
عضو فعال
تاريخ التسجيل: Apr 2002-
#12 (permalink)  

اخي اشرف جزاك الله كل خير

شرحك افادني جداً

تسلم وربنا يوفقك






__________________
mahmoud009 سابقاً
منتدى بي اتش بي
فِكرة لتقنية المعلومات
فِكرة غير متواجد حالياً   قديم 12-01-2007, 04:17 PM
رد مع اقتباس
عضو فعال
تاريخ التسجيل: Aug 2005-
#13 (permalink)  

واياك استاذي محمود .. والله يسلمك يارب وان شاء الله تكون استفدت فعلاً مثل ما نستفيد دايماً منكم






__________________
أحمد أبو النصر
Junior php Developer
+20166196074
أحمد أبو النصر غير متواجد حالياً   قديم 12-01-2007, 07:52 PM
رد مع اقتباس
عضو فعال
تاريخ التسجيل: Aug 2005-
#14 (permalink)  

اقتباس:
المشاركة الأصلية كتبت بواسطة Dr.Server
sBForum حمد لله على السلامة .. لك مدة غائب .. أسعدتني عودتك أخي

ودرس جميل تشكر عليه .. ولدي سؤال إذا سمحت .. عند القراءة من موقع معين لأدرجها بموقعي مثلا .. أصادف أحيانا مشكلة في وسوم الهتمل لأنها تتشابك مع وسوم الهتمل بموقعي وممكن تلعب بالتصميم .. فمثلا وسوم التيبل والصفوف والخلايا التي أقرأها من ذلك الموقع سيتم تفعيلها على وسوم التيبل عندي بالموقع وتتسبب في تشويه الجداول لدي

هل من طريقة لقراءة أجزاء معينة من المواقع دون الهتمل ؟
اعتذر لرفع الموضوع
اخي Dr.Server أتمنى انك تقرأ هذا اذا لم تكن تقرأه سابقاً:
http://www.swalif.net/softs/showthread.php?t=160062
للأخ almosmm جزاه الله خيراً ... وأي خدمة انا تحت امرك

تحياتي، sBForum






__________________
أحمد أبو النصر
Junior php Developer
+20166196074
أحمد أبو النصر غير متواجد حالياً   قديم 05-02-2007, 04:40 PM
رد مع اقتباس
رد


أدوات الموضوع

تعليمات المشاركة
لا تستطيع كتابة مواضيع
لا تستطيع كتابة ردود
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة



الساعة الآن: 07:16 AM بتوقيت المملكة العربية السعودية