preg_match_all 用于附加 bbcode
preg_match_all for atttach bbcode
我有两种类型的 bbcode:
[attach]1234[/attach]
[attach=full]1234[/attach]
$message = 'this is message with attach [attach=full]1234[/attach]
我想从字符串中删除所有内容并使用:
(preg_match_all('/\[ATTACH((.*?)\](.+?)\[\/ATTACH\]/i', $message, $out, PREG_SET_ORDER))
if (preg_match_all('/\[ATTACH((.*?)\](.+?)\[\/ATTACH\]/i', $message, $out, PREG_SET_ORDER))
{
for ($i=0;$i<count($out);$i++)
{
$replace_src[] = $out[$i][0];
$replace_str[] = $out[$i][1];
$newMessage = str_ireplace($replace_src, $replace_str, $message);
}
}
此代码删除 [attach][/attach] 但不删除 [attach=full][/attach]
=full
存在于消息中。
使用 preg_replace()
,而不是 preg_match_all()
。
使用可选组匹配attach
之后的可选=xxx
。
$newMessage = preg_replace('/\[ATTACH(?:=.*?)?\](.+?)\[\/ATTACH\]/i', '', $message);
我有两种类型的 bbcode:
[attach]1234[/attach]
[attach=full]1234[/attach]
$message = 'this is message with attach [attach=full]1234[/attach]
我想从字符串中删除所有内容并使用:
(preg_match_all('/\[ATTACH((.*?)\](.+?)\[\/ATTACH\]/i', $message, $out, PREG_SET_ORDER))
if (preg_match_all('/\[ATTACH((.*?)\](.+?)\[\/ATTACH\]/i', $message, $out, PREG_SET_ORDER))
{
for ($i=0;$i<count($out);$i++)
{
$replace_src[] = $out[$i][0];
$replace_str[] = $out[$i][1];
$newMessage = str_ireplace($replace_src, $replace_str, $message);
}
}
此代码删除 [attach][/attach] 但不删除 [attach=full][/attach]
=full
存在于消息中。
使用 preg_replace()
,而不是 preg_match_all()
。
使用可选组匹配attach
之后的可选=xxx
。
$newMessage = preg_replace('/\[ATTACH(?:=.*?)?\](.+?)\[\/ATTACH\]/i', '', $message);