صفحة 1 من 2 12 الأخيرةالأخيرة
النتائج 1 إلى 15 من 17

الموضوع: highlight_string $1

  1. #1
    عضو سوبر نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    613

    highlight_string $1



    كود PHP:
    $code '[php1]$word = "swalif softs";
    echo md5($word);[/php1]'
    ;
    echo 
    preg_replace('/\[php1\](.*)\[\/php1\]/siU','<div dir="ltr">code:<blockquote><pre style="background-color: #eee;">$1</pre></blockquote></div>',$code); 
    يقوم الكود السابق بعرض ما بين الوسمين php1 و /php1
    تلاحظون ان الموجود بين الوسمين هو كود php ..
    اريد تنفيذ الدالة highlight_string على المتغير $1 ..

    قمت بـ
    كود PHP:
    echo preg_replace('/\[php1\](.*)\[\/php1\]/siU','<div dir="ltr">code:<blockquote><pre style="background-color: #eee;">'.highlight_string('$1',flase).'</pre></blockquote></div>',$code); 
    لكن لم تفلح المحاولة ..





    التعديل الأخير تم بواسطة dev11 ; 25-10-2007 الساعة 10:33 AM


  2. #2
    عضو نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    181


    نفذ الفنكشن الاول
    بعدين اعمل ريبليس






  3. #3
    عضو سوبر نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    613


    كيف يمكن ان انفذ الدالة اولا والمتغير لم يتم تعريفه بعد ؟






  4. #4
    عضو سوبر نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    613


    عند تنفيذ
    كود PHP:
    echo preg_replace('/\[php1\](.*)\[\/php1\]/siU','<div>'.highlight_string('$1',true).'</div>','[php1]echo md5("php");[/php1]'); 
    ولكن عند وضع العلامات <?,?> لا يظهر شيء ..
    كود PHP:
    echo preg_replace('/\[php1\](.*)\[\/php1\]/siU','<div>'.highlight_string('$1',true).'</div>','[php1]<? echo md5("php"); ?>[/php1]');






    التعديل الأخير تم بواسطة dev11 ; 25-10-2007 الساعة 11:48 AM

  5. #5


    كود PHP:
    $code '[php1]$word = "swalif softs";
    echo md5($word);[/php1]'
    ;


    if (
    preg_match('/\[php1\](.*)\[\/php1\]/siU'$code$php))
    {
        echo 
    highlight_string($php['1'], true);







    __________________
    تابعني على Twitter

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


    المتغير $1 او الرمز \\1 هي تعتبر مرجع الى قيم يستخدم داخل الدالة نفسها , ولا يمكن تمرير هذه القيم الى دوال اخرى , يتم فهم هذه الرموز ومعالجتها من قبل الدالة.

    لكن يمكن الوصول الى النتيجة المطلوبه باستخدام المتحول e والذي يتيح امكانية تنفيذ الكود وهو خاص بالدالة preg_replace . مثال
    كود PHP:
    $data "hello word";
    echo 
    preg_replace('/(.+)/e'"'strlen(\'\\1\')='.strlen('\\1')"$data);
    //أو
    echo preg_replace('/(.+)/e'"strlen('\\1')"$data); 






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

  7. #7
    عضو سوبر نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    613


    اخي الكريم مدمن نت ..
    الطريقة صحيحة لكني اريد اضافتها الى مصفوفة ..
    ولا يمكن وضع هذا الكود في مصفوفة ..
    شكراً لك ..

    اخي الكريم daif ..
    حقيقةً لم افهم ما تقصده بالمتغير e ..
    ولم افهم طريقة استعمال هذا الكود مع الدالة highlight_code ..

    هذه الدالة كاملة ..
    كود PHP:
    <?php

    // define the text
    $text '[link]http://www.google.com[/link]
    [link=http://www.google.com]google[/link]
    [email]admin@gmail.com[/email]
    [email=admin@gmail.com]admin[/email]
    [image]http://www.google.com/intl/en_ALL/images/logo.gif[/image]
    [b]bold[/b]
    [i]italic[/i]
    [u]underline[/u]
    [quote]quote[/quote]
    [quote=name]quote[/quote]
    [code]code[/code]
    [php1]$word = "php";[/php1]'
    ;

    // remove any html codes
    $text htmlspecialchars($text);

    // bbcodes
    $bbcodes = array(

              
    // links
              
    '/\[link\](.*)\[\/link\]/siU',
              
    '/\[link\=(.*)\](.*)\[\/link\]/siU',
                
              
    // email links
              
    '/\[email\](.*)\[\/email\]/siU',
              
    '/\[email\=(.*)\](.*)\[\/email\]/siU',
                
              
    // images
              
    '/\[image\](.*)\[\/image\]/siU',
                
              
    // bold, italic, underline
              
    '/\[b\](.*)\[\/b\]/siU',
              
    '/\[i\](.*)\[\/i\]/siU',
              
    '/\[u\](.*)\[\/u\]/siU',
                
              
    // quotes
              
    '/\[quote\](.*)\[\/quote\]/siU',
              
    '/\[quote\=(.*)\](.*)\[\/quote\]/siU',

              
    // codes
              
    '/\[code\](.*)\[\/code\]/siU',
              
              
    // php codes
              
    '/\[php1\](.*)\[\/php1\]/siU'

              
    );

    // html codes
    $htmlcodes = array(

                
    // links
                
    '<a target="_blank" href="$1">$1</a>',
                
    '<a target="_blank" href="$1">$2</a>',
                
                
    // email links
                
    '<a href="mailto:$1">$1</a>',
                
    '<a href="mailto:$1">$2</a>',
                
                
    // images
                
    '<img src="$1" alt="image" border="0" />',

                
    // bold, italic, underline
                
    '<strong>$1</strong>',
                
    '<em>$1</em>',
                
    '<u>$1</u>',
                
                
    // quotes
                
    '<div>quote:<blockquote class="quote">$1</blockquote></div>',
                
    '<div>originally posted by $1:<blockquote class="quote">$2</blockquote></div>',

                
    // codes
                
    '<div dir="ltr">code:<blockquote><pre class="code">$1</pre></blockquote></div>',

                
    // php codes
                
    '<div dir="ltr">php code:<blockquote class="code">'.highlight_string('$1',true).'</blockquote></div>'
                
    );

    // replace bbcodes with html codes
    $text preg_replace($bbcodes,$htmlcodes,$text);

    // convert new lines to <br />
    $text nl2br($text);

    // a simple style
    print '<style type="text/css">
    .quote {
        background-color: #fffed1;
    }
    .code {
        background-color: #eee;
    }
    </style>'
    ;

    // print the text with out slashes
    print stripslashes($text);

    ?>
    التعديل سيكون في السطرين 47 و 78 ..

    شكراً لكم مقدماً .






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


    الكود الذي وضعته لا يعمل بشكل سليم , عند تمرير اسم الداله highlight_string في المصفوفه $htmlcode في عملية الاستبدال يتم تنفيذ الداله قبل بدون ارسالة المتغير لها , يعنى قيمةالمتغير لا شيء عند تنفيذها .
    اما اذا وضعتها في الكود فاسيعاملها على انها نص عادي وليس داله .

    - لا اعتقد انى سوف اوصل لك الفكره , لكن راجع مثالي السابق وحاول استخدامه .





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

  9. #9
    عضو سوبر نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    613


    لقد فهمت مقصدك ..
    كود PHP:
    $code = '[php1]<?php
    echo "Hello daif!";
    ?>[/php1]';

    echo preg_replace('/\[php1\](.*)\[\/php1\]/se',"highlight_string('$1',true)",$code);
    في ناتج هذه العملية لا يتم تلوين الكود بشكل صحيح ..
    كود:
     <?php 
    echo "Hello daif!\"; 
    ?> 







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


    الرجاء التاكد الكود يعمل لدي بشكل سليم .
    http://daif.net/script/highlight_string.php





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

  11. #11
    عضو نشيط جدا
    تاريخ التسجيل
    Feb 2007
    المشاركات
    393


    أفضّل استخدام preg_replace_callback في هذه الحالة
    هذا كود معتمد فيه على كود مقتبس من اكواد vB

    كود PHP:
    <?
    $code 
    '[php1] $word = "php";[/php1]';
    $code preg_replace_callback('/\[php1\](.*)\[\/php1\]/siU','_handlePHPCODE',$code);
    echo 
    $code;
    function 
    _handlePHPCODE($matches)
    {
    static 
    $codefind1$codereplace1$codefind2$codereplace2;    
        
    $code $matches[1];
        if (!
    is_array($codefind1))
        {
            
    $codefind1 = array(
                
    '<br>',        // <br> to nothing
                
    '<br />'    // <br /> to nothing
            
    );
            
    $codereplace1 = array(
                
    '',
                
    ''
            
    );
        
            
    $codefind2 = array(
                
    '&gt;',        // &gt; to >
                
    '&lt;',        // &lt; to <
                
    '&quot;',    // &quot; to ",
                
    '&amp;',    // &amp; to &
                
    '[',    // [ to [
                
    ']',    // ] to ]
            
    );
            
    $codereplace2 = array(
                
    '>',
                
    '<',
                
    '"',
                
    '&',
                
    '[',
                
    ']',
            );
        }
        
        
    // remove htmlspecialchars'd bits and excess spacing
        
    $code rtrim(str_replace($codefind1$codereplace1$code));
        
    //$blockheight = $this->fetch_block_height($code); // fetch height of block element
        
    $code str_replace($codefind2$codereplace2$code); // finish replacements
        
        // do we have an opening <? tag?
        
    if (!preg_match('#<\?#si'$code))
        {
            
    // if not, replace leading newlines and stuff in a <?php tag and a closing tag at the end
            
    $code "<?php BEGIN__VBULLETIN__CODE__SNIPPET $code \r\nEND__VBULLETIN__CODE__SNIPPET ?>";
            
    $addedtags true;
        }
        else
        {
            
    $addedtags false;
        }
        
        
    // highlight the string
        
    $oldlevel error_reporting(0);
        
    $code highlight_string($codetrue);
        
    error_reporting($oldlevel);
        
        
    // if we added tags above, now get rid of them from the resulting string
        
    if ($addedtags)
        {
            
    $search = array(
                
    '#&lt;\?php( |&nbsp;)BEGIN__VBULLETIN__CODE__SNIPPET( |&nbsp;)#siU',
                
    '#(<(span|font)[^>]*>)&lt;\?(</\\2>(<\\2[^>]*>))php( |&nbsp;)BEGIN__VBULLETIN__CODE__SNIPPET( |&nbsp;)#siU',
                
    '#END__VBULLETIN__CODE__SNIPPET( |&nbsp;)\?(>|&gt;)#siU'
            
    );
            
    $replace = array(
                
    '',
                
    '\\4',
                
    ''
            
    );
        
            
    $code preg_replace($search$replace$code);
        }
        
        
    $code preg_replace('/&amp;#([0-9]+);/''&#$1;'$code); // allow unicode entities back through
        
    $code str_replace(array('['']'), array('['']'), $code);
        return  
    $code;
    }
    انا ضد فكرة الاقتباس لكن هذا يعطيك فكرة ان كنت مصّر على استخدام highlight_string
    او ابحث في قوقل عن GeSHI.





    __________________
    موقعي الشخصي
    www.Flasher.ws

    جزيرة الفنون
    www.Artsisland.net

  12. #12
    عضو سوبر نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    613


    اخي العزيز Flasher .. دالة مميزه ..
    ارى ان ما يميز هذه الدالة هي امكانية تلوين الكود حتى لو لم توضع العلامتين <?php ?>
    ايضا استفدت كثيرا عند بحثي في جوجل عن GeSHI ..
    جزاك الله خيراً ..





    التعديل الأخير تم بواسطة dev11 ; 27-10-2007 الساعة 07:57 PM

  13. #13
    عضو سوبر نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    613


    الخطأ عندي ..

    لاحظ انك وضعت ..
    كود PHP:
    'highlight_string("$1",true)' 
    بينما انا وضعت..
    كود PHP:
    "highlight_string('$1',true)" 
    وهنا يكمن الخطأ

    اشكرك اخي الكريم daif .. واسأل الله لك دوام التوفيق ..





    التعديل الأخير تم بواسطة dev11 ; 27-10-2007 الساعة 07:58 PM

  14. #14
    عضو سوبر نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    613


    لا تزال هذه الطريقة تحتوي على بعض المشاكل ..
    عند كتابة متغير ..
    كود PHP:
    $swalif "Hello swalif!"
    فانه لا يظهر ..

    اعتد ان الطريقة الانسب هي باستخدام الدالة preg_replace_callback كما أشار الاخ العزيز Flasher ..
    كود PHP:
    $code = '[php1]<?php
    $swalif 
    "Hello swalif!";
    echo 
    $swalif;
    ?>[/php1]';

    echo preg_replace_callback('/\[php1\](.*)\[\/php1\]/s',"highlight",$code);

    function highlight($matches)
    {
        // remove [php1], [/php1]
        $matches[0] = str_replace("[php1]","",$matches[0]);
        $matches[0] = str_replace("[/php1]","",$matches[0]);

        return highlight_string($matches[0],true);
    }






    التعديل الأخير تم بواسطة dev11 ; 27-10-2007 الساعة 08:08 PM

  15. #15
    عضو سوبر نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    613


    بالنسبة لـ GeSHI ..
    يمكن تحميله من SourceForge.net: Files ..

    اما عن طريقة استخدامه في حالتنا فستكون :
    كود PHP:
    $code '[php1]echo "Hello swalif!";[/php1]';

    echo 
    preg_replace_callback('/\[php1\](.*)\[\/php1\]/s',"geshi",$code);

    function 
    geshi($matches)
    {
        
    // include geshi
        
    $geshi = include_once("geshi/geshi.php");

        
    // remove [php1], [/php1]
        
    $matches[0] = str_replace("[php1]","",$matches[0]);
        
    $matches[0] = str_replace("[/php1]","",$matches[0]);

        
    $geshi = new GeSHi($matches[0],"php");
        
        
    // to enable line numbers
        //$geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS);
        
        
    return $geshi->parse_code();

    الان اصبح من غير اللازم كتابة :
    كود PHP:
    <?php
    كود PHP:
    ?> 
    صِنف رائع بحق










المواضيع المتشابهه

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

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

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