سؤال

أنا أحاول جعل Geshi يعمل مع تخفيض التنفيذ.

الاستخدام البسيط لـ Geshi هو كما يلي:

$geshi = new GeSHi($message, 'c');
print $geshi->parse_code();

يستغرق الرمز أعلاه في الرسالة بالكامل ويحولها إلى رمز مميز

لدي أيضًا وظيفة التخفيض الخاصة بي

print Markdown($message);

كنت أحاول استخدام وظيفة الاتصال preg_match ال <pre> تم إرجاع العلامات من Markdown وتشغيل geshi->parse_code(); وظيفة على القيم التي تم إرجاعها

ها هو الكود الخاص بي

print preg_replace_callback(
   '/<pre.*?>(.*?[<pre.*?>.*<\/pre>]*)<\/pre>/gism',
    create_function(
        // single quotes are essential here,
        // or alternative escape all $ as \$
        '$matches',
        '$geshi = new GeSHi($matches[0], \'php\'); return $geshi->parse_code()'
    ),
    Markdown($blog_res['message']));

هل أنا على الطريق الصحيح؟

هل regex على حق؟ يعمل على http://gskinner.com/regexr/

شكرا للمساعدة

هل كانت مفيدة؟

المحلول 2

كان regex :(

بدلاً من

/<pre.*?>(.*?[<pre.*?>.*<\/pre>]*)<\/pre>/gism 

استخدم (إزالة العلم العالمي)

/<pre.*?>(.*?[<pre.*?>.*<\/pre>]*)<\/pre>/ism 

ولكن إذا كنت تستخدم Markdown ، فعليك أن تتذكر التعويض عن code الكتل التي هي الخاصة بك وبالتالي تحتاج إلى استبدال فقط تلك الموجودة في شكل <pre><code>...MyCode</code></pre> واتركها Hello <code>MyCode</code> لذلك تحتاج إلى ما يلي

'/<pre.*?><code.*?>(.*?[<pre.*?><code.*?>.*<\/code><\/pre>]*)<\/code><\/pre>/ism',

نصائح أخرى

للرجوع إليها في المستقبل ، قد ترغب في التحقق من البرنامج المساعد الخاص بي لهذا:

https://github.com/drm/markdown_geshi

يعتمد على المكون الإضافي المنتظم لإضافة كتلة تحمل علامة Shebang لتسليط الضوء على الكود ، مثل هذا:

#!php
<?php print('This is PHP code'); ?>

يعمل بشكل جيد وأنا أستخدمه على مدونتي الخاصة بانتظام.

أنا أفهم أنك [كنت] تتطلع إلى تمديد التخفيض ، مما يضيف دعمًا لتمييز بناء جملة Geshi. تجميل هل هذا وأكثر. على سبيل المثال ، يمكنه تقديم الرسوم البيانية في نقطة.

يختلف نهج Beautify إلى كتل Geshi DRM/Marmdown_geshi في تلك "الأسوار" تستخدم. علي سبيل المثال:

~~~ php
<?php print('This is PHP code'); ?>
~~~

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top