2011-03-25 76 views
10

我需要从下面的变量值中删除$widget_text中的括号“[”和“]”,并将结果存储在$widget_id中。从字符串中删除特定字符的方法?

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

使用preg_replacestr_replace或其他什么东西?

+0

米歇尔的回答将帮助您完成,但你希望做的字符串的任何验证? – 2011-03-25 14:28:52

+1

@Col。 S:谢谢你的建议,sans废话;-) – 2011-03-25 15:32:41

回答

39

有几种方法可用,它们有时可以执行完全相同的任务,如preg_replace/str_replace。但是,也许你只想从字符串的开头或结尾去掉括号;在这种情况下preg_replace工作。但是,如果可能有几个括号,preg_replace也可以完成这项工作。但修剪更容易,更有意义。

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

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

str_replace()函数 - 这在任何地方删除括号内的文字

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

装饰() - 修剪括号从开始和结束

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

SUBSTR() - 不一样的装饰()(假设小部件的文字不包括在文本中的任何闭括号)

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

+1以获得有用的解释和用例示例。 – 2011-03-25 15:23:06

+0

@Scott B:np,只是想通了你已经知道_how_使用str_replace – 2011-03-25 15:24:47

+0

是的:我可能实际上喜欢这种情况下的修剪选项。它的好处就在于它的微不足道。 – 2011-03-25 15:34:47

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

'$ widget_id = str_replace(array('[',']'),'',$ widget_text);'更好 – 2011-03-25 14:28:27

+0

@Carlos:谢谢! – 2011-03-25 14:30:05

1

如果括号总是在第一和最后的位置,使用此:

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

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

+1

最快的方法:$ widget_text ='widget_and-some-text'; :P – 2011-03-25 14:48:17

+0

但开玩笑说,它应该比等效的preg_replace(array('/^\ [/','/ \] $ /'),'',$ widget_text) – 2011-03-25 15:10:20