如何在PHP中删除此标记?

时间:2010-09-10 16:43:54

标签: php regex bbcode

我希望从文本中删除所有内容(包括标签),例如:

[url=http://example.com]something[/url]

但有一个条件,[url]标记内部会有[img]个标记。 所以最后一句要削减:

[url=http://example.com]anything[img]something[/url]

任何人都可以帮忙吗?我对正则表达式不好,还是有更简单的方法?

2 个答案:

答案 0 :(得分:1)

这个怎么样:

<?php

ini_set('display_errors', 1);
ini_set('error_reporting', E_ALL | E_STRICT);

$testCases = array(
    'foo bar baz [url=http://example.com]anything[img]something[/url] foo bar baz',
    'foo bar baz [url=http://example.com]anythingsomething[/url] foo bar baz',
    'FOO BAR BAZ [URL=HTTP://EXAMPLE.COM]ANYTHING[IMG]SOMETHING[/URL] FOO BAR BAZ',
    'FOO BAR BAZ [URL=HTTP://EXAMPLE.COM]ANYTHINGSOMETHING[/URL] FOO BAR BAZ',
);

foreach ($testCases as $testCase) {
    $results[] = preg_replace("{\[url(?!.*?\[img\].*?).*?\[/url\]}is", '', $testCase);
};

print_r($results);

?>

答案 1 :(得分:0)

我会尝试这些脚本行

$subject = '[url=http]anything[imag]something[/url]';
$pattern = '@^\[url[^].]*\]{1}(.*)\[/url\]$@';
preg_match($pattern, $subject, $matches);
echo $matches[1]; //anything[imag]something

结果是你想要的吗?