Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.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,我需要一种方法,仅使用php从中删除周围的方括号: [txt]text[/txt] 所以结果应该是:文本 它们总是成对出现 它们总是在字符串的开头和结尾。Thet将始终是[txt1][/txt1]或[url2][/url2] 我该怎么做?试试这个: preg_replace("/\[(\/\s*)?txt\d*\]/i", "", "[txt]text[/txt]"); 更新: 这将适用于括号中的“whatever”: preg_replace("/\[.+?\]/i", "", "[txt

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

[txt]text[/txt]
所以结果应该是:文本

它们总是成对出现

它们总是在字符串的开头和结尾。Thet将始终是[txt1][/txt1]或[url2][/url2]

我该怎么做?

试试这个:

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

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

preg_replace("/\[.+?\]/i", "", "[txt]text[/txt]");
试试这个:

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

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

preg_replace("/\[.+?\]/i", "", "[txt]text[/txt]");
您可以使用正则表达式:

$string = '[whatever]content[/whatever]';
$pattern = '/\[[^\[\]]*\]/i';
$replacement = '';
echo preg_replace($pattern, $replacement, $string);
这将从字符串中删除所有
[任何内容]

您可以使用正则表达式:

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

这将从字符串中删除所有
[任何内容]

您不需要使用regexp。您可以先在[]上分解字符串,然后使用结果在[]上分解


使用此方法的优点是它快速且简单。

您不需要使用regexp。您可以先在“]上分解字符串,然后使用结果在[]上分解


使用此方法的优点是快速简单。

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

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

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

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

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

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

方括号是否总是成对出现([thing]…[/thing]?)它们是否总是位于字符串的开头和结尾?它们是否嵌套?它们是否嵌套不正确([thing1]…[thing2]…[/thing1]…[/thing2])?如果是,会发生什么?@Hammerite是的,它们总是成对出现。它们总是在字符串的开头和结尾。它们总是[thing1][/thing1]或[thing2][/thing2]你在找一个吗?如果是的话,那么可能是@Gordon的副本,类似的东西,但我只需要这个特定的部分。方括号是否总是成对出现([thing]…[/thing]?)它们是否总是在字符串的开头和结尾?它们是否嵌套?它们是否嵌套不当([thing1]…[thing2]…[/thing1]…[/thing2])?如果是,会发生什么?@Hammerite是的,它们总是成对出现。它们总是在字符串的开头和结尾。它们总是[thing1][/thing1]或[thing2][/thing2]你在找一个吗?如果是的话,那么可能是@Gordon的副本,类似的东西,但我只需要这个特定的部分。是的,但这只适用于txt,而不适用于括号内的任何东西。我如何才能使它适用于括号内的任何东西?谢谢。@JoseCardama,请查看更新的答案。这将匹配并删除什么内容ever在括号内。但请注意,这也将删除任何不成对的标记。是的,但这只适用于txt,而不适用于括号内的任何标记。我如何使其适用于括号内的任何标记?谢谢。@JoseCardama,请查看更新的答案。这将匹配并删除括号内的任何标记但是请注意,这也会删除任何不成对的标签。糟糕,我在正则表达式中输入了一个错误。现在试试。糟糕,我在正则表达式中输入了一个错误。现在试试。