شوّيت: شبكة كرة قدم اجتماعية




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

الرد على الموضوع
 
LinkBack أدوات الموضوع
عضو نشيط جدا
#1  
Exclamation من فضلكم ارجو الرد على هذا الاستفسار عاجل

السلام عليكم ورحمة الله وبركاته
ارجو من مبرمجى بى اتش بى مساعدتى فى هذا الاستفسار وهو
فى بحثى داخل موقع php.net عن دالة preg_replace_callback
وجدت هذا المثال
كود PHP:
  <?php
$input 
"plain[indent] deep[indent] deeper [/indent]deep [/indent]plain";

function 
parseTagsRecursive($input)
{

    
$regex '#\[indent]((?:[^[]|\[(?!/?indent])|(?R))+)\[/indent]#';

    if (
is_array($input)) {
        
$input '<div style="margin-left: 10px">'.$input[1].'</div>';
    }

    return 
preg_replace_callback($regex'parseTagsRecursive'$input);
}

$output parseTagsRecursive($input);

echo 
$output;
?>
وهذا ما كنت ابحث عنه ولكن ينقص شئ
ما ابحث عنه هو البحث عن التاجات بشكل معين داخل صفحات html
برجاء الرد بالكود ويرجى شرح اجزائه






__________________
Ahmed Elhady
Coder
أحمد الهادي is offline   قديم 06-03-2010, 07:08 PM
الرد مع إقتباس
عضو فعال
#2  

الرجاء وضع صفحة ال html التي تريد تحليلها

مع الطريقة الخاصة التي تريد البحث بها

والغرض من هذا الكود حتى استطيع مساعدتك

بانتظارك






ahmad sadiq is offline   قديم 06-03-2010, 08:14 PM
الرد مع إقتباس
عضو نشيط جدا
#3  

شكرا لاهتمامك يا اخى الكود الذى اود البحث فيه غير ثابت
لكن ساعطيك مثال حتى تتمكن من فهم قصدى

كود PHP:
<html>
<
head>
</
head>
</
html
اريد البحث بطريقة ما تمكننى من اظهار التاجات حتى وان كانت
تاجات فرعيه من تاجات اخرى يتم تقسيمها بشكل صحيح

ارجو ان تكون وصلتك فكرتى






__________________
Ahmed Elhady
Coder
أحمد الهادي is offline   قديم 06-03-2010, 08:53 PM
الرد مع إقتباس
عضو فعال
#4  

سوف استخدم كلاس domDocument وكلاس domNodeلكي اطبع كل التاغات التي في الملف حسب ترتيبها
في ملف html، ومن هذا المثال اعتقد سوف تتمكن من الوصول إلى اي تاغ تريده، وعرضه بالطريقة والترتيب الذي تريد.

القسم الأول من الكود(احضار ملف ال html)
كود PHP:
$dom = new DOMDocument();
$dom->loadHTMLFile("page.html");
$html $dom->getElementsByTagName("html")->item(0);
PrintChildElements($html->childNodes,""); 
في البداية عرفنا الكلاس ثم احضرنا الصفحة page.html التي سوف نحللها، وطبعًا ممكن ان تضع مكان اسم الصفحة رابط لصفحة بموقع.

وبعد ذلك احضرنا التاغ html وهو التاغ الرئيسي في الملف. وتحته يوجد تاغات الhead وال body والتي بدورها تحوي تاغات"وسوم" فرعية.
مثل title : هو وسم فرعي لل head لأننا نضعه داخله.
لكي نصل إلى وسم حسب اسمه ننفذ:
كود PHP:
$html $dom->getElementsByTagName("html")->item(0); 
ماهي دالة item?
لو نفذنا:
كود PHP:
 $dom->getElementsByTagName("html"
سوف يرجع لنا كائن من نوع DOMNodeList
أي عبارة عن قائمة تحوي كل الوسوم التي تحمل هذا الاسم
الكلاس:
http://www.php.net/manual/en/class.domnodelist.php

ولكي نصل إلى node محدد نستخدم الدالة item

لكي نصل إلى الوسوم الفرعية لوسم معين ننفذ الدالة الفرعية childNodes
لو نفذنا :
كود PHP:
$html $dom->getElementsByTagName("html")->item(0);
echo 
$html->childNodes->length 
سوف يطبع لنا في حالتنا 2.
وهو عدد الوسوم الفرعية للوسم html
الوسوم الفرعية هي head و body

ولو نفذنا نفس الدالة على الوسم head سيظهر لنا الوسوم الفرعية له

القسم الثاني(اظهار جميع الوسوم الفرعية لوسم معين)
نستعمل الدالة التالية:
كود PHP:
function PrintChildElements($domList,$level){
if (
$domList->length ==0)
return ;
else{
$level++;
foreach(
$domList as $item){
if (
$item->nodeName !="#text"){
echo 
$level." ".$item->nodeName."<br>";
PrintChildElements($item->childNodes,$level);

}
}


}

انصحك بمراجعة الكلاسات التالية:
http://www.php.net/manual/en/class.domnodelist.php
http://www.php.net/manual/en/class.domdocument.php
http://www.php.net/manual/en/class.domnode.php


المثال في المرفقات







آخر تعديل بواسطة ahmad sadiq في 12-05-2011 الساعة 01:17 AM.
ahmad sadiq is offline   قديم 06-03-2010, 11:10 PM
الرد مع إقتباس
عضو نشيط جدا
#5  

السلام عليكم شكرا على الاهتمام بالموضوع
لكن المشكله يا اخى انى اعرف هذا الكلاس ولكنه غير مضاف على PHP4
بالاضافه انى اريد تعلم اساليب استخدام هذه الداله حتى اتمكن من البحث عن النصوص بشكل
متقدم اكتر
لو كان عندك تعليم شامل له اكون شاكر جدا لك وياريت يكون سهل ومفسر لان
http://www.regular-expressions.info
صعب فى شرحه






__________________
Ahmed Elhady
Coder
أحمد الهادي is offline   قديم 07-03-2010, 12:03 AM
الرد مع إقتباس
عضو فعال
#6  

آسف لا استطيع مساعدتك بالنسبة لهذه الدالة

اما بالنسبة لل dom فهو متواجد في الجافاسكربت

ويمكن تطبيق المثال على الجافاسكربت ايضًا
ولكن بما ان المنتدى لل php كتبت الكود بها

راجع دروس الاخ عبد الله عيد للمستوى المتوسط






ahmad sadiq is offline   قديم 07-03-2010, 12:10 AM
الرد مع إقتباس
عضو فعال
#7  

على فكرة هناك نسخة لل dom لل php4
وهي:
http://php.net/manual/en/book.domxml.php

بالمناسبة لا تفرق اذا استعملت الدوال لل xml أو ال html لأن كلاهما تكتب بال tags






ahmad sadiq is offline   قديم 07-03-2010, 12:12 AM
الرد مع إقتباس
عضو نشيط جدا
#8  

شكرا جدا يا اخوان على التعاون معى
سوف استعمل دوم مؤقتا حتى اجد شرح
لهذه الداله
بالنسبه للاخ ahmed فالجافا سكربت عباره عن نظام دوم
وشاكر جدا لتعاونك معى






__________________
Ahmed Elhady
Coder

آخر تعديل بواسطة أحمد الهادي في 07-03-2010 الساعة 07:24 PM. السبب: خطا املائى
أحمد الهادي is offline   قديم 07-03-2010, 07:23 PM
الرد مع إقتباس
عضو فعال
#9  

اخي الكريم بالنسبة للدالة التي وضعتها...

هي تقوم بالبحث عن وسوم bb محددة،لاستعمالها مع ال html نستعمل:
كود PHP:
<?php
$input 
"plain <div> deep <div> deeper </div> deep  </div> plain";

function 
parseTagsRecursive($input)
{

    
$regex '#\<div>((?:[^[]|\[(?!/?div])|(?R))+)\</div>#';

    if (
is_array($input)) {
    
        
$input '<div style="margin-left:  10px">'.$input[1].'</div>';
    }

    return 
preg_replace_callback($regex'parseTagsRecursive'$input);
}

$output parseTagsRecursive($input);
echo 
$output;

?>
هنا الدالة تبحث عن وسم div ، وما عداه يتم طباعته كأي مخرج آخر.

يعني لو بدلنا المدخل إلى:
كود PHP:
$input "plain <div> deep <b> deeper </b> deep  </div> plain"
سوف يتم طباعة كلمة deeper مشددة لأنه سيطبعها ك html

ما فهمته من عمل الدالة preg_replace_callback
انها تبحث عن طريق التعابير القياسية وتستدعي الدالة في البارامتر الأخير لتقوم بعملية التبديل.

أي ان الشرط:
كود PHP:
if (is_array($input)) {
    
        
$input '<div style="margin-left:  10px">'.$input[1].'</div>';
    } 
يتنفذ لكل تاغ نجده.

لأستعمالها لإيجاد اي تاغ نكتب:
كود:
 $regex = '#\<*.>((?:[^[]|\[(?!/?*.])|(?R))+)\</*.>#';
لتعلم التعابير القياسية هناك كتاب جيد يشرحها وهو:
sams teach yourself regular expressions in 10 minutes

الملف في المرفقات


إقتباس:
المشاركة الأصلية بواسطة أحمد الهادي مشاهدة مشاركة
شكرا جدا يا اخوان على التعاون معى
سوف استعمل دوم مؤقتا حتى اجد شرح
لهذه الداله
بالنسبه للاخ ahmed فالجافا سكربت عباره عن نظام دوم
وشاكر جدا لتعاونك معى
كنت اقصد ان الدوال متشابهة بالنسبة للتعامل مع الوسوم







آخر تعديل بواسطة ahmad sadiq في 12-05-2011 الساعة 01:17 AM.
ahmad sadiq is offline   قديم 07-03-2010, 08:25 PM
الرد مع إقتباس
عضو نشيط جدا
#10  

شكرا يا اخ احمد على ردك وهذا الكتاب يبدو قيم
سوف اقوم بدراسته فى وقت لاحق واقوم بالتعليق عليه

لدى سؤال لك اود معرفته اذا كنت لا تعتبره تطفل
ما هى اللغات التى تتقنها
ومنذ متى وانت تعمل فى مجال البرمجه؟






__________________
Ahmed Elhady
Coder

آخر تعديل بواسطة أحمد الهادي في 08-03-2010 الساعة 04:09 PM.
أحمد الهادي is offline   قديم 08-03-2010, 12:32 PM
الرد مع إقتباس
عضو فعال
#11  

كانت بدايتي مع البرمجة في الصف السابع مع الفيجوال بيسك

وبعدها php في التاسع

اما في الصف العاشر فقد علمونا في المدرسة html+javascript+asp
بالاضافة للغة ال c

وفي صفوف متقدمة علمونا visual c مع data structures(الآن يعلمون الجافا وال c#.net)

عندما دخلت الجامعة تعلمت الجافا ومنها تعلمت برمجة الموبايل midlet وبرمجة ال applets
وعلمونا ايضًا ال c/c++

اما بالنسبة لي فلم "اعمل" بالبرمجة ابدًا

وهذه هي قصة حياتي






ahmad sadiq is offline   قديم 08-03-2010, 04:27 PM
الرد مع إقتباس
عضو نشيط جدا
#12  

ماشاء الله قصه حياه مليئه بالكفاح
ولكن خاتمة القصه لا تعجبنى بطل القصه لماذا لا يعمل بمجال البرمجه
على الرغم من تعدد لغات البرمجه التى تعلمها؟






__________________
Ahmed Elhady
Coder
أحمد الهادي is offline   قديم 09-03-2010, 03:01 PM
الرد مع إقتباس
الرد على الموضوع


 

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

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

كود vB متاح
كود [IMG] متاح
كود HTML غير متاح
Trackbacks are متاح
Pingbacks are متاح
Refbacks are متاح


المواضيع المشابهه
الموضوع كاتب الموضوع القسم الردود آخر مشاركة
عاجل .. من فضلكم .. طريقة استكمال نقل الملفات الكبيرة جدا لسيرفر آخر سفير التقنية سوالف الاستضافة 4 25-01-2009 09:37 PM
ابي حل عاجل من فضلكم خبراء سوالف ارجوكم مساعدتي www.loools.com تقنية محركات البحث Search Engine Optimization 5 13-09-2008 08:00 AM
ارجو المساعدة..من فضلكم .كود الجزيرة يصعد لاعلى Speero الويب والويب 2.0 والـ Semantic Web 1 24-02-2005 09:10 PM
عاجل .. عاجل .. ارجو الرد هذه المرة على الأقل .. www.net سوالف الاستضافة 6 04-04-2004 09:50 AM
سؤال عاجل من فضلكم!! الملسون التصميم والرسومات والمونتاج 1 23-07-2000 05:29 PM


جميع الأوقات بتوقيت غرينتش +3. الوقت الآن هو 08:28 AM.