Geshi مع تخفيض
-
26-09-2019 - |
سؤال
أنا أحاول جعل 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 كان في الخلف عندما كان هذا السؤال نشطًا ، لكن يبدو أنه يستحق الذكر في إجابة.