2014-02-12 151 views
3

在我的程序中基本上只允许使用包含字母“IOSHZXN”的单词 我试图找出一种方法,您可以混合字母,它会认识到它匹配。 例如,字SHINT不匹配,因为它有一个T,但这个词SHINX匹配,因为它只包含上市(IOSHZXN)检查一个字符是否在一个字中在PHP中

<?php 

     $word = "IOSHZNX"; 

     $charactersallowed = "IOSHZXN"; 

     if (preg_match('/IOSHZXN/', $word)) { 
      echo "YES"; 
     } else { 
      echo "NO"; 
     } 



    ?> 

任何帮助,将不胜感激字母的组合..

回答

1

你可以这样做:

它匹配任何东西,是那些字母中的,并返回相反:

if (!preg_match('/[^IOSHZXN]+/', $word)) { 
    echo "YES"; 
} 

另外,如果你希望它是区分大小写的,你可以使用:

if (!preg_match('/[^IOSHZXN]+/i', $word)) { 
    echo "YES"; 
} 
  • [^...]什么THA匹配t未在括号内定义。
  • +继续搜索整个字符串。
  • i使得它不关心信件是否大写。
+0

你能解释一下为什么我需要使用[^],还有/ i。将不胜感激:) –

+0

是的,我编辑了答案。 – Anonymous

+0

好吧,当我键入允许的字符“IOSHZXN”,但追加一个不允许的字母,如“IOSHZXNT”,它仍然表示它匹配?任何方式在这个? –

2

你应该使用:

if (preg_match('/^[IOSHZXN]+$/', $word)) { 

^$确保字符串只有一个字母IOSHZXN组合。

相关问题