Заменить некоторые строки в PHP на регулярное выражение? - PullRequest
1 голос
/ 28 января 2010

Мне нужно сделать простое регулярное выражение, найти и заменить на PHP для моего скрипта подсветки синтаксиса в PHP.

Мне нужно взять строку кода, которая фактически будет целым php-файлом, который читается в строку, подобную этой.

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

А затем найдите все их случаи и сделайте замену ...

Найдите: [php] и замените на <pre class="brush: php;">
Найдите: [/ php] и замените на </pre>

Найдите [javascript] и замените на <pre class="brush: js;">
Найдите: [/ javascript] и замените на </pre>

Я действительно плохо разбираюсь в регулярных выражениях. Может, кто-нибудь, пожалуйста, поможет мне с этим?

Ответы [ 2 ]

4 голосов
/ 28 января 2010

Для замены строк внутри строк вы можете просто str_replace();. Если я правильно понимаю ваш вопрос, он будет выглядеть примерно так:

<code>$code_string = htmlentities(file_get_contents("file.php"));
$old = array("[php]","[javascript]","[/php]","[/javascript]");
$new = array('<pre class="brush: php;">','<pre class="brush: js;">','
», ''); $ new_code_string = str_replace ($ old, $ new, $ code_string); echo $ new_code_string;
0 голосов
/ 28 января 2010
<code>$out = preg_replace(
  array(
   '/\<\?(php)?(.*)\?\>/s',
   '/\<script(.*) type\=\"text\/javascript\"(.*)\>(.+)\<\/script\>/s'
  ),
  array(
   '<pre class="brush: php;">$2
», '
$3
), $ код );

Заменит любой источник PHP внутри тегов open и close (short и long), заменит любой источник JS внутри тегов script хотя бы на один символ (исключит теги script, связанные с исходными файлами JavaScript)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...