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

29

我需要从下面变量值的$widget_text中移除方括号"["和"]",并将结果存储在$widget_id中。

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

使用 preg_replacestr_replace 或其他方法?


Michiel的回答可以解决你的问题,但是你想对字符串进行任何验证吗? - Chris Sobolewski
1
@Col. S:感谢您提供的有用建议,没有垃圾 ;-) - Scott B
3个回答

67

有多种方法可用,它们有时可以执行完全相同的任务,如 preg_replace/str_replace。但是,也许您只想从字符串开头或结尾删除括号,在这种情况下 preg_replace 可以起作用。但是,如果可能有多个括号,则 preg_replace 也可以完成任务。但 trim 更简单,更合理。

preg_replace() - 删除开头和结尾的括号

$widget_id = preg_replace(array('/^\[/','/\]$/'), '',$widget_text);      

str_replace() - 这将从文本中的任何位置删除括号

$widget_id = str_replace(array('[',']'), '',$widget_text);

trim() - 从开头和结尾删除括号

$widget_id = trim($widget_text,'[]')

substr() - 和 trim() 做了相同的事情(假设小部件文本中不包含任何闭合括号)

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

@Scott B:没问题,我只是想你已经知道了如何使用str_replace。 - Peter Lindqvist
没错:在这种情况下,我可能真的喜欢修剪选项。无论如何都很琐碎,正如好的Col.所指示的那样。 - Scott B

6
$widget_id = str_replace('[', '', str_replace(']', '', $widget_text));

10
$widget_id = str_replace(array('[', ']'), '', $widget_text); 的意思是用空字符替换 $widget_text 中的方括号 [ ],并将结果赋值给 $widget_id 变量。 - Carlos Campderrós

1
如果括号总是在第一和最后位置,使用这个:
$widget_id = substr($widget_text, 1, strlen($widget_text)-2);

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


2
最快的方法:$widget_text = 'widget_and-some-text'; :P - Peter Lindqvist
开个玩笑,但它应该比等效的preg_replace(array('/^[/','/]$/'), '',$widget_text)更快。 - Peter Lindqvist

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接