【发布时间】:2012-08-01 19:19:49
【问题描述】:
我正在尝试用空白空间替换我的内容中的所有内容,除了我的 bbcode 中的内容(以及 bbcode 本身)。
这是我的代码来消除我的 bbcode。 BBCode 只是识别重要内容的小帮手。
$content = preg_replace ( '/\[lang_chooser\](.*?)\[\/lang_chooser\]/is' , '$1' , $content );
难道不能直接否定这段代码吗?
$content = preg_replace ( '/^[\[lang_chooser\](.*?)\[\/lang_chooser\]]/is' , '' , $content );
干杯并感谢四位您的帮助!
编辑 这是我的解决方案(抱歉,我目前无法回答我自己的问题)
$firstOcc = stripos($content, '[lang_chooser]');
$lastOcc = stripos($content, '[/lang_chooser]');
$content = substr($content, $firstOcc, $lastOcc + strlen('[/lang_chooser]') - $firstOcc);
$content = preg_replace('/' . addcslashes('[lang_chooser](.*?)[/lang_chooser]', '/[]') . '/is', '$1', $content);
我认为这不是最好的解决方案,但它目前有效。 也许有更好的方法来做到这一点;-)
【问题讨论】:
-
您是否像我建议的那样查看了 preg_match ?我认为它比你现在拥有的更正确。同样,您的问题似乎表明您想保留 bbcode ...您的解决方案将其丢弃。另外,如果您已经使用 substring 来获取字符串的一部分,那么 preg_replace 的用途是什么?正则表达式的存在是为了更容易找到字符串中的偏移量......
标签: php preg-replace bbcode