1

我需要一种仅使用 php 从中删除周围方括号的方法:

[txt]text[/txt]

所以结果应该是:文本

它们总是成对出现。

它们始终位于字符串的开头和结尾。Thet 将始终为 [txt1][/txt1] 或 [url2][/url2]

我该怎么做?

4

4 回答 4

1

尝试这个:

preg_replace("/\[(\/\s*)?txt\d*\]/i", "", "[txt]text[/txt]");

更新:

这将适用于括号中的“任何”:

preg_replace("/\[.+?\]/i", "", "[txt]text[/txt]");
于 2013-08-17T16:30:16.457 回答
0

您可以使用正则表达式:

$string = '[whatever]content[/whatever]';
$pattern = '/\[[^\[\]]*\]/i';
$replacement = '';
echo preg_replace($pattern, $replacement, $string);

这将从[whatever]字符串中删除所有内容。

于 2013-08-17T16:36:13.250 回答
0

您不需要使用正则表达式。您可以在第一个 ] 上爆炸字符串,然后使用结果在 [ 上爆炸。

使用这种方法的优点是快速且简单。

于 2013-08-17T16:49:29.807 回答
0

如果您只需要获取简单结构的方括号之间的文本,请尝试以下操作:

$str = '[tag1]fdhfjdkf dfhjdkf[/tag1]';
$start_position = strpos($str, ']') + 1;
$end_postion = strrpos($str, '[');
$cleared = substr($str, $start_position, $end_postion - $start_position);

对于更复杂的结构,此代码将不起作用,您必须使用其他一些方法。

于 2013-08-17T18:39:38.890 回答