PHP简单维基解析器需要NOWIKI标签。

3

我有一个简单的函数,可以将纯文本转换成维基标记。但是我遇到了一个问题,就是无法防止某些字符串被修改。因此,我需要额外添加一个nowiki标签,在其中不会进行任何更改。由于我对正则表达式不太熟悉,所以需要帮助。

<?php
function simpleText($text){
 $text = preg_replace('/======(.*?)======/', '<h5>$1</h5>', $text);
 $text = preg_replace('/=====(.*?)=====/', '<h4>$1</h4>', $text);
 $text = preg_replace('/===(.*?)===/', '<h3>$1</h3>', $text);
 $text = preg_replace('/==(.*?)==/', '<h2>$1</h2>', $text);
 $text = preg_replace('/==(.*?)==/', '<h1>$1</h1>', $text);
 $text = preg_replace("/\*\*(.*?)\*\*/", '<b>$1</b>', $text);
 $text = preg_replace("/__(.*?)__/", '<u>$1</u>', $text);
 $text = preg_replace("/\/\/(.*?)\/\//", '<em>$1</em>', $text);
 $text = preg_replace('/\-\-(.*?)\-\-/', '<strike>$1</strike>', $text);
 $text = preg_replace('/\[\[Image:(.*?)\|(.*?)\]\]/', '<img src="$1" alt="$2" title="$2" />', $text);
 $text = preg_replace('/\[(.*?) (.*?)\]/', '<a target="_blank" href="$1" title="$2">$2</a>', $text);
 $text = preg_replace('/&gt;(.*?)\n/', '<blockquote>$1</blockquote>', $text);

 $text = preg_replace('/\* (.*?)\n/', '<ul><li>$1</li></ul>', $text);
 $text = preg_replace('/<\/ul><ul>/', '', $text);

 $text = preg_replace('/# (.*?)\n/', '<ol><li>$1</li></ol>', $text);
 $text = preg_replace('/<\/ol><ol>/', '', $text);

 $text = '<div class="wikiText">'.$text.'</div>';
 return $text;
}                                                                                          
?>
1个回答

0

你可以使用 (?!ignore)

 $text = preg_replace('(?!--)/======(.*?)======/(?!--)', '<h5>$1</h5>', $text);

如果头部用“--”括起来,将不会解析它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接