检查单词是否包含字母数字

时间:2016-12-25 12:26:08

标签: php regex

$str = 'This is a string with alphanumeric chars @ (test-exclude)';

要查看字符串,我了解其/^[a-zA-Z0-9]+$/但我需要检查字符串的每个单词并从选择中排除这些单词。

在上面的字符串中,我需要它来排除@(test-exclude)

编辑:当然,我可以遍历每个单词并处理,但寻找一种优雅的方式因为我已经这样做了:

array_unique(
  array_filter(
    explode(' ',
      preg_replace("/^[a-zA-Z0-9]+$/", ' ',
        implode(' ',
          array_map('strtolower',
            array_column( iterator_to_array($Cursor), 'description')
          )
        )
      )
    )
  )
);

2 个答案:

答案 0 :(得分:2)

explode在空格上然后执行倒置preg_grep

print_r(preg_grep("/[^a-z0-9]/i", explode(' ', $str), PREG_GREP_INVERT));

输出:

Array
(
    [0] => This
    [1] => is
    [2] => a
    [3] => string
    [4] => with
    [5] => alphanumeric
    [6] => chars
)

答案 1 :(得分:0)

您可以使用didProduce返回多个匹配项。这些匹配可以包括在字符串的开头或结尾处以间隔或锚定方式封装的字母数字字词:

preg_match_all