2011-12-04 48 views
2

我知道如何将一个字符串中删除特定字符,但不知道以下几点:PHP之间并包括特定字符删除字符

例如字符串:Code [7845] [5589] [554] [4]

我需要删除它们之间的[]所有实例和一切,然后修剪掉空格所以我最终只是:Code

这可能吗?

+0

到目前为止您尝试过什么?这是绝对可能的,只需要一个简单的表达。 –

回答

1

尝试以下操作:

$str = trim(preg_replace('/\[\d+\]/', '', 'your_string_here')); 

该函数的第一个参数是一个正则表达式。你看到的\d与一个数字相匹配,并且+后面说明你应该至少匹配1个数字。 Check here了解有关preg_replace的更多信息。 Check here有关正则表达式的更多信息。

+0

不修剪空白。 – FailedDev

+0

@FailedDev,yep编辑了答案。 –

5

这将做到这一点:)

$result = preg_replace('/\[.*?\]|\s*/', '', $subject); 

说明:

" 
\[ # Match the character “[” literally 
.  # Match any single character that is not a line break character 
    * # Between zero and unlimited times, as many times as possible, giving back as needed (greedy) 
\] # Match the character “]” literally 
" 

由于@Felix指出,这是一个相当简单的表达。你应该看看here并尝试熟悉你可以使用的各种技术。

+1

+1一个可行的答案! – nickb

+0

这将删除这个[12asda]。他只要求数字值:) –

+0

@SavasVedova除非我的Englsh背叛了我,否则*之间的任何事物都意味着一切。 – FailedDev

1

您需要提供更多关于您的要求的细节。

假设:

$s = 'Code [7845] [5589] [554] [4]'; 

如果字符串总是与你是什么后,剩下的总是可以丢弃开始,那么这很可能是最有效的:

$s = trim(substr($s, 0, strpos($s, '['))); 

如果您想要保留原始字符串,并只删除数字组,然后:

$s = trim(preg_replace('/\[\d+\]/', '', $s)); 
相关问题