2011-04-18 151 views
0

我有一个字符串数组。我需要所有不包含任何特殊字符的字符串。只允许一个到z。有没有使用正则表达式的方法或有任何字符串函数?查找带单引号的字符串

+0

'ST的阵列戒指样品? – 2011-04-18 09:10:58

回答

0

您可以使用匹配仅包含A到Z和a到z的字符串的正则表达式^[a-zA-Z]*$。 (它也会匹配一个空字符串)。

说明:

  • ^是,在字符串的开始锚正则表达式锚(所以正则表达式开始从字符串的开头匹配)
  • [a-zA-Z]是包含一个字符类字符我们要匹配
  • *指示它应(对于一次或多次使用+)
  • $为的端部的锚定匹配零次或多次该字符串,所以正则表达式必须停止匹配在字符串的末尾或它不会匹配。

您使用的preg_match检查一个字符串,看它是否有模式的匹配(如果没有匹配的preg_match返回0,所以我们只检查有匹配):

if (preg_match('/^[a-zA-Z]*$/', $subject) !== 0){ 
    //match 

因此,你然后可以遍历字符串的阵列上,并创建这些与模式相匹配的新数组

+0

preg_match返回1或0,所以我认为!== false不起作用。类型是不同的。 !== 0工作正常 – 2011-04-18 09:22:13

+0

@Nisnath良好的捕获。 PHP返回值非常不一致。 – Yacoby 2011-04-18 09:25:04

0
$array = "your_array"; 
$output_array = array(); 
foreach ($array as $elem) { 
    if (preg_match('/^[a-zA-Z]{1,}$/', $elem)) { 
     $output_array[] = $elem; 
    } 
} 

在output_array将是您的数据