النتائج 1 إلى 4 من 4

الموضوع: يا خبراء ال regular expression و preg_replace يرجا للمساعدة

  1. #1
    عضو فعال جدا
    تاريخ التسجيل
    Jun 2003
    المشاركات
    2,270

    يا خبراء ال regular expression و preg_replace يرجا للمساعدة



    السلام عليكم

    اخواني عندي مشكلة في ال regular expression

    احاول عمل محرك بحث عن القوالب خاص لموقع مبرمج برمجة خاصة وقمت بوضع الكود التالي

    كود PHP:

                            $this->content[$this->tempname] = preg_replace("'<INCLUDE FILENAME=\"([A-Za-z0-9_]+)\">'i",
                                    "<? include(\"$this->lunix_dir_temp/\\1\"); ?>",$this->content[$this->tempname]);

                                       
    //Variables
                                   
    $this->content[$this->tempname] = preg_replace("'{([A-Za-z0-9_]+)}'","<? echo \$this->vars[\\1] ?>",
                                            
    $this->content[$this->tempname]);



    عند البحث في ما بين القوسين {} اريده ان يتضمن ال نقطة (.) وايضا الشلاش (/) مع ملاحظة انه ممكن ان تتكرر السلاش في المتغير الذي يتم استبداله

    وكذالك الحال اريد تضمن النقطة (.) والسلاش (/) عند استبدال محتوى المتغير الموجود داخل وسم <INCLUDE FILENAME="">

    انت عمل include لملف يجب وضع المسار الخاص بالملف /folder/sub_folder/another-sub_folder/file.php فيتطلب قبل كافة الحروف فيما فيها النقطة التي تمثل امتداد الملف والسلات التس تمثل فولدر ثاني


    وشكرا





    __________________


    عاشت فلسطين وعاشت المقاومة
    http://www.palintefada.com/arabic
    http://www.palissue.com/arabic
    موقع انتفاضة فلسطين - موقع القضية الفلسطينية
    الكاسر



  2. #2
    عضو فعال جدا
    تاريخ التسجيل
    Jun 2003
    المشاركات
    2,270


    دعوني اشرح المشكلة بالتفاصيل لكين نحل المشكلة

    لدي الكلاس التالي (وهو كلاس للبحث عن القوالب)

    كود PHP:

    <?php
    class Template{

            var 
    $content= array();
            var 
    $vars;
            var 
    $tempname;
            var 
    $lunix_dir_temp;


            function 
    GetTemplate($tempname)
              {
                    
    $this->tempname "$tempname";

                    
    $get_main_style=mysql_query("SELECT id, main FROM styles WHERE main='1'");
                    
    $row_style=mysql_fetch_array($get_main_style);
        
                    
    $get_temp=mysql_query("SELECT name, styleid, template FROM templates WHERE styleid="$row_style[id] ." AND  name='$tempname' ") OR die(echodie());
                    
    $row_temp=mysql_fetch_array($get_temp);

                    
    $body $row_temp['template'];
                    
    $body stripslashes($body);

                    
    $this->content[$this->tempname] = stripslashes($body);

                    
    mysql_free_result($get_main_style);
                    
    mysql_free_result($get_temp);
                    unset(
    $row_style);
                    unset(
    $row_temp);
                    unset(
    $body);
              }

            
    //Function to FixTemplate the Template Tags
            
    function FixTemplate()
              {
             
    $this->lunix_dir_temp=GetCWD();

                            
    //start loop
                            
    $this->content[$this->tempname] = preg_replace("'<LOOP NAME=\"([A-Za-z0-9_]+)\">'i",
                            
    "<? foreach(\$this->vars[\\1] as \$key=>\$var){ ?>",$this->content[$this->tempname]);

                            
    //end loop
                            
    $this->content[$this->tempname] = preg_replace("'</LOOP>'i","<? } ?>",
                            
    $this->content[$this->tempname]);


                            
    //Start IF Statement
                            
    $this->content[$this->tempname] = preg_replace("'<IF NAME=\"(.+)\">'i",
                                    
    "<? if(\$this->vars[\\1] == 1){ ?>",$this->content[$this->tempname]);

                            
    //end IF Statment
                            
    $this->content[$this->tempname] = preg_replace("'</IF>'i","<? } ?>",
                                    
    $this->content[$this->tempname]);

                            
    //Variables
                            
    $this->content[$this->tempname] = preg_replace("'{([A-Za-z0-9_/. ]+)}'","<? echo \$this->vars[\\1] ?>",
                            
    $this->content[$this->tempname]);


                            
    //Include Statement
                            
    $this->content[$this->tempname] = preg_replace("'<INCLUDE FILENAME=\"([A-Za-z0-9_/. ]+)\">'i",
                                    
    "<? include(\"$this->lunix_dir_temp/\\1\"); ?>",$this->content[$this->tempname]);


                }




                    
    //Function to Display template
                    
    function DisplayTemplate()
                    {

                            
    $this->vars = &$GLOBALS;
                            
    $this->FixTemplate();

                             
    ob_start();

                            
    //eval('?'.'>'.trim($this->content[$this->tempname]).'<'.'?');
                            
    eval('?'.'>'.trim($this->content[$this->tempname]).'<'.'?');

                            
    $this->content[$this->tempname] = ob_get_contents();
                            
    ob_end_clean();

                             print 
    $this->content[$this->tempname];

                    }
            }

    ?>


    الان يقوم الكلاس باستبدال كلمة ما بين {} على اساس انها متغير
    مثال يسحول {filename} الى $filename لتكون متغير يعمل في ملفات ال php

    وايضا يقوم الكلاس عمل include للملفات الموجودة بداهل <INCLUDE FILENAME="dir/to/file/filename.php">
    يستبد هذا النص بالنص التالي include("dir/to/file/filename.php"); لتعمل انكلود للصفحة ولتعمل على ملفات ال php

    الان المشكلة في القالب التالي

    كود:
    <div id="{column_size}">
    <INCLUDE FILENAME="{filename}">
    </div>
    يجب على الكلاس عمل التالي ليعمل بشكل سليم
    1) استبدال المتغير
    2) ادراج الملف

    ولاكن يبدم ان هناك مشكلة في استبدال المتغير {filename} بداخل وسم ال include !!!

    لانه لو وضعت مسار حقيقي للملف في القالب بدلا من المتغير {filename} سوف يعمل من غي رمشاكل. يعمل بشكل سليم!!!!

    كيف ممكن التعديل على هذا الكلاس ليتم في البداية استبدال المتغيرات حتى وان وجدت داخل وسم الانكلود ومن ثم عمل ادراج للملف؟؟؟؟


    وشكرا للاهتمام





    __________________


    عاشت فلسطين وعاشت المقاومة
    http://www.palintefada.com/arabic
    http://www.palissue.com/arabic
    موقع انتفاضة فلسطين - موقع القضية الفلسطينية
    الكاسر


  3. #3
    عضو شرف
    تاريخ التسجيل
    Apr 2002
    المشاركات
    1,379


    الشرطة المائلة + النقطة هي من رموز التعابير القياسية , لذلك عليك عن كتابتة في التعبير ان تقوم بتهريبها بوضع شرطة مائلة قبل اي رمز تكتبه .
    كود:
    [a-z\.]
    وضعت شرطة مائلة قبل النقطه , ماذا ذا كنت اريد تهريب شرطة مائله
    كود:
    [a-z\/]
    ايضا اضع شرطة مائله قبلها

    الان سيصبح تعبير اسم الملف
    كود:
    ([A-Za-z0-9_\./\]+)
    للمزيد راجع
    http://www.php.net/manual/en/referen...ern.syntax.php





    __________________
    ضيف الله العتيبي مبرمج حر و مهندس معتمد من زيند (ZCE)
    الاتصال: daif@daif.net او جوال: 0556639884
    الخدمات: تقديم استشارات برمجيه, تطوير بوابات/خدمات إلكترونيه للقطاع العام او الخاص .

  4. #4
    عضو فعال جدا
    تاريخ التسجيل
    Jun 2003
    المشاركات
    2,270


    اقتباس المشاركة الأصلية كتبت بواسطة daif
    الشرطة المائلة + النقطة هي من رموز التعابير القياسية , لذلك عليك عن كتابتة في التعبير ان تقوم بتهريبها بوضع شرطة مائلة قبل اي رمز تكتبه .
    كود:
    [a-z\.]
    وضعت شرطة مائلة قبل النقطه , ماذا ذا كنت اريد تهريب شرطة مائله
    كود:
    [a-z\/]
    ايضا اضع شرطة مائله قبلها

    الان سيصبح تعبير اسم الملف

    ([A-Za-z0-9_\.\/]+)

    للمزيد راجع
    http://www.php.net/manual/en/referen...ern.syntax.php

    السلام عليكم
    شكرا اخي ضيف لمرورك ولتصحيحك تم تعديل السطر الذي طرحته ليعمل بشكل سليم
    ([A-Za-z0-9_\.\/]+)


    ولكن هذا التعديل لم يقم بحل المشكلة

    فيبدو ان الكلاس يقوم بعمل include("{filename}"); من غير ما يقوم باستبدال المتغير الداخل في الوسم

    يرجا حل هذا الخلل اي ترتيب الاوامر
    1) استبدال المتغيرات
    2) عمل ادراج للملف

    شكرا عزيزي





    __________________


    عاشت فلسطين وعاشت المقاومة
    http://www.palintefada.com/arabic
    http://www.palissue.com/arabic
    موقع انتفاضة فلسطين - موقع القضية الفلسطينية
    الكاسر






ضوابط المشاركة

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

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض