Php 从字符串中删除特定字符的方法?

Php 从字符串中删除特定字符的方法?,php,string,Php,String,我需要从下面变量值中的$widget\u text中删除括号“[”和“]”,并将结果存储在$widget\u id中 $widget_text = '[widget_and-some-text]'; $widget_id = ?; 使用preg\u replace、str\u replace或其他方法?有几种方法可用,有时可以使它们执行完全相同的任务,如preg\u replace/str\u replace。但是,也许您只想删除字符串开头或结尾的括号;在这种情况下,preg_替换工作正常。但

我需要从下面变量值中的
$widget\u text
中删除括号“[”和“]”,并将结果存储在
$widget\u id

$widget_text = '[widget_and-some-text]';
$widget_id = ?;

使用
preg\u replace
str\u replace
或其他方法?

有几种方法可用,有时可以使它们执行完全相同的任务,如preg\u replace/str\u replace。但是,也许您只想删除字符串开头或结尾的括号;在这种情况下,preg_替换工作正常。但是,如果有几个括号,preg_replace也可以完成这项工作。但修剪更容易,更有意义

$widget_id = str_replace('[', '', str_replace(']', '', $widget_text));
preg_replace()-删除开头和结尾的括号

$widget_id = preg_replace(array('/^\[/','/\]$/'), '',$widget_text);      
str_replace()-这将删除文本中任何地方的括号

$widget_id = str_replace(array('[',']'), '',$widget_text);
$widget_id = substr($widget_text,
                    $start = strspn($widget_text, '['),
                    strcspn($widget_text, ']') - $start
             );
修剪()

$widget_id = trim($widget_text,'[]')
substr()-与trim()相同(假设小部件文本中不包含任何右括号)


如果支架始终位于第一个和最后一个位置,则使用以下方法:

$widget_id = substr($widget_text, 1, strlen($widget_text)-2);

我认为这是一种更快的方法…

$widget\u id=str\u replace(数组(“[”,“]”),“$widget\u text)betterMichiel的答案可以帮你完成,但是你想对字符串进行验证吗?@Col.s:谢谢你的建议,sans crap;-)最快的方式:$widget_text='widget_和-some-text';:P但撇开玩笑不谈,它应该比同等的preg_replace(数组('/^[/','/]$/'),'$widget_text)@Scott B:np快,只是觉得你已经知道如何使用str_replaceYep:在这种情况下,我可能真的喜欢trim选项。正如好上校所指出的那样,无论哪种方式都是微不足道的。