用regex替换PHP中的一些字符串?

时间:2010-01-28 05:16:19

标签: php regex

我需要做一个简单的正则表达式查找并用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 个答案:

答案 0 :(得分:4)

要替换字符串中的字符串,您只需str_replace();。如果我正确理解你的问题,它将看起来像这样:

$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;

答案 1 :(得分:0)

$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
 );

将替换open和close标签中的任何PHP源(短和长),将用至少一个字符替换脚本标记内的任何JS源(将避免链接到javascript源文件的脚本标记)。