在PHP中查找和替换标记及其内容
我有一个包含BBcode的字符串,我成功地用此代码删除了所有格式:在PHP中查找和替换标记及其内容,php,Php,我有一个包含BBcode的字符串,我成功地用此代码删除了所有格式: $plain_text = strip_tags(str_replace(array('[',']'), array('<','>'), $message)); 号码“4281”将始终不同,因此如何删除它 我试过: preg_replace("/[ATTACH=full](.*)[\/ATTACH]/eis", '', $message); 但这不起作用。我猜这与“attach=full”部分和等号有关 有什么想
$plain_text = strip_tags(str_replace(array('[',']'), array('<','>'), $message));
号码“4281”将始终不同,因此如何删除它
我试过:
preg_replace("/[ATTACH=full](.*)[\/ATTACH]/eis", '', $message);
但这不起作用。我猜这与“attach=full”部分和等号有关
有什么想法吗?谢谢。这个正则表达式应该可以:
preg_replace("/\[ATTACH=full\].*\[\/ATTACH\]/", '', $message);
正如Cbroe所说,您需要替换“[”和“]”字符
更新:在正则表达式的开头和结尾添加了斜杠“/”。此正则表达式应该可以:
preg_replace("/\[ATTACH=full\].*\[\/ATTACH\]/", '', $message);
正如Cbroe所说,您需要替换“[”和“]”字符
更新:在正则表达式的开头和结尾添加了斜杠“/”。永远不要用正则表达式解析HTML。使用。等号没有任何特殊含义;但是方括号(字符类)是这样的——所以你需要避开它们。并删除
e
修饰符–除了被弃用并因此产生警告之外,它在这里没有任何用处。@JayBlanchard,它始终取决于您想要实现什么。以防没有人能比得上正常人expressions@Ironank尝试使用ContentHandler作为默认值,它将丢弃所有BBCode标记并保持内容完整。如果要完全删除所有BBCode,请使用NullHandler。我很乐意回答您的任何问题。@Tomasz Kowalczyk谢谢,如果我有任何问题,我一定会回复您。您永远不应该用正则表达式解析HTML。使用。等号没有任何特殊含义;但是方括号(字符类)是这样的——所以你需要避开它们。并删除e
修饰符–除了被弃用并因此产生警告之外,它在这里没有任何用处。@JayBlanchard,它始终取决于您想要实现什么。以防没有人能比得上正常人expressions@Ironank尝试使用ContentHandler作为默认值,它将丢弃所有BBCode标记并保持内容完整。如果要完全删除所有BBCode,请使用NullHandler。我很乐意回答您的任何问题。@Tomasz Kowalczyk谢谢,如果我有任何问题,我一定会回复您。您是对的,我转义了这些字符,但仍然出现以下错误:preg_replace():分隔符不能是字母数字或反斜杠@Ironank,我用斜杠“/”更新了解决方案,因为需要解决“分隔符”问题。我在一个简单的php脚本上进行了测试。希望它对你有用。谢谢,只是厌倦了,没有更多的错误。然而,出于某种原因,它并没有删除标签中的内容。我试过了。*也试过了(*),但什么都没有。有什么想法吗?呜呜,划破它,是我的错。你的代码工作得很好,谢谢@Arcangel2你是对的,我转义了这些字符,但仍然出现了以下错误:preg_replace():分隔符不能是字母数字或反斜杠@Ironank,我用斜杠“/”更新了解决方案,因为它是解决“分隔符”问题所必需的。我在一个简单的php脚本上进行了测试。希望它对你有用。谢谢,只是厌倦了,没有更多的错误。然而,出于某种原因,它并没有删除标签中的内容。我试过了。*也试过了(*),但什么都没有。有什么想法吗?呜呜,划破它,是我的错。你的代码工作得很好,谢谢@Arcangel2p