Bir sayfadaki tüm s vurgulamak sözdizimi PHP Kullanımı ...

1 Cevap php

Ben dinamik bir site için sözdizimi vurgulamasını sağlamak için highlight_code("$string"); (More info) fonksiyonu yanında, CodeIgniter kullanıyorum. Ben kullanıcıların BBCode tarzı biçiminde yazılmış kendi mesaj göndermek için mümkün olmak istiyorum. Bunun için NBBC PHP library kullanıyorum.

Benim sorunum bunu nasıl nomatter ben NBBC sözdizimi-vurgu benim kullanıcıların girmek sadece [code][/code] etiketleri alınamıyor olmasıdır. Burada [kodu] için PHP bulunuyor:

'code' => Array(
'mode' => BBCODE_MODE_ENHANCED,

'template' => "\n<div class=\"bbcode_code\">\n<p>Code:</p>\n<code><?php $highlight_code(\"?>{\$_content/v}<?php \");?></code>\n</div>\n",
'class' => 'code',
'allow_in' => Array('listitem', 'block', 'columns'),
'content' => BBCODE_VERBATIM,
'before_tag' => "sns",
'after_tag' => "sn",
'before_endtag' => "sn",
'after_endtag' => "sns",
'plain_start' => "<div id=\"footer\">",
'plain_end' => "</div>",
'simple_start' => '\n<div class=\"bbcode_code\">\n<p>Code:</p>\n<code>',
'simple_end'   => '</code>\n</div>\n',
),

Eğer ben orada turşu <?php $highlight_code(\"?>{\$_content/v}<?php \");?> diyor çizgi görürseniz, ben o etiketleri içinde yer kodunu vurgulamak düşündüm. Ben oldukça bu çıkışlar (farklı kombinasyonlar bol denedim) ama ben aldım yakın PHP metin olarak ihraç ediliyordu ne hatırlayamıyorum - benim sayfa XHTML kaynağı sadece metin olarak ortaya çıktı.

Ne ideal highlight_code ($ string) kullanılarak, sözdizimi-vurgulanmış bir sayfada etiketleri içindeki tüm içeriği için yapabileceğiniz; veya benzeri?

Ben düşünüyordum preg_replace bir seçenek olurdu ama ben dinamik etiketler outputted arasındaki her şeyi değiştirmek için bunu nasıl bilmiyorum (değil [code], hatırlıyorum, ama HTML hangi NBBC çıkışlar).

1 Cevap

[Code] içeriğini [/ code] etiketleri ve highlight_code () olduğunu ayıklamak için ilk kullanım preg_match.

Vurgulanan kodu ile () orijinal dize kod alanını preg_replace için sonuçları kullanın. Pseudocode-ish:

$code = preg_match(/code pattern/, $string);
$code = highlight_code($code);
$string = preg_replace(/code pattern/, $code, $string);

Umarım işe yarar.