Regex PHP ile bazı dizeleri değiştirmek?

2 Cevap php

Ben basit bir regex bulurum ve PHP komut vurgulama benim sözdizimi için PHP ile değiştirmeniz gerekir.

Aslında böyle bir dizeye okunan bir bütün php dosya olacak kod dizesini almak gerekir.

$code_string = 'the whole source code of a php file will be held in this string';

Ve sonra tüm bu tekrarlarını bulmak ve bir değiştiririm ...

Find: [php] and replace with <pre class="brush: php;">
Find: [/php] and replace with </pre>

Find [javascript] and replace with <pre class="brush: js;">
Find: [/javascript] and replace with </pre>

Birisi bu konuda lütfen bana yardımcı olabilir ben gerçekten regex iyi değilim?

2 Cevap

Yapabilecekleriniz sadece str_replace(); dizeleri içindeki dizeleri değiştirilmesi için. Sorunuzu doğru anlamak, bunun gibi bir şey olacaktır:

$code_string = htmlentities(file_get_contents("file.php"));
$old = array("[php]","[javascript]","[/php]","[/javascript]");
$new = array('<pre class="brush: php;">','<pre class="brush: js;">','</pre>','</pre>');
$new_code_string = str_replace($old,$new,$code_string);
echo $new_code_string;
$out = preg_replace(
  array(
   '/\<\?(php)?(.*)\?\>/s',
   '/\<script(.*) type\=\"text\/javascript\"(.*)\>(.+)\<\/script\>/s'
  ),
  array(
   '<pre class="brush: php;">$2</pre>',
   '<pre class="brush: js;">$3</pre>'
  ),
  $code
 );

Açık ve kapalı etiketleri (kısa ve uzun) içinde herhangi bir PHP kaynak yerini alacak, (javascript kaynak dosyaları bağlantılı script etiketlerini önlemek olacaktır) en az bir karakterle script etiketleri içinde herhangi bir JS kaynak yerini alacak.