Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中查找和替换标记及其内容_Php - Fatal编程技术网

在PHP中查找和替换标记及其内容

在PHP中查找和替换标记及其内容,php,Php,我有一个包含BBcode的字符串,我成功地用此代码删除了所有格式: $plain_text = strip_tags(str_replace(array('[',']'), array('<','>'), $message)); 号码“4281”将始终不同,因此如何删除它 我试过: preg_replace("/[ATTACH=full](.*)[\/ATTACH]/eis", '', $message); 但这不起作用。我猜这与“attach=full”部分和等号有关 有什么想

我有一个包含BBcode的字符串,我成功地用此代码删除了所有格式:

$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