【问题标题】:php check text only english allowed and other language not allowed [duplicate]php检查文本只允许英文,不允许其他语言[重复]
【发布时间】:2017-08-20 02:00:48
【问题描述】:

我需要检查 php 中的文本并且只允许英文

我的代码是:

应该匹配:

Gautier-, !@#$%^&*()_+|';?>< A.; R.; Falcs, J.M;

不应匹配:

Problem dojrzałościmałżeństwa"; // not allowed
book for محمد taj
Еос ферри

代码:

if (! preg_match('/^[a-z0-9 .\-]+$/i',  $string) ) 
{
  echo "Not allowed";
}

但不工作

【问题讨论】:

  • “只允许英语”与限制可能的字符集有什么关系?这种方法相当幼稚(完全有效的英语单词),或者就像我们在德语中所说的那样,“dumm wie Brot” - 现在您要限制哪些字符以排除 that ...?
  • 波兰语单词“tlen”(以及许多其他)仅包含 ASCII 字母,没有正则表达式会告诉您它不是英语。这是 NLP 语言猜测算法的任务。要仅检查字符串是否仅包含 ASCII 字符,请使用 ^[[:ascii:]]+$
  • 成功了!非常感谢...@WiktorStribiżew
  • if (! preg_match('%^[ -~]+$%', $string) ) { echo "Not allowed"; } 成功了!

标签: php regex wordpress


【解决方案1】:

只需在字符类中添加特殊字符即可:

if (! preg_match('/^[a-z0-9 .}, !@#$%^&*()_+|\';?><-]+$/i',  $string) ) {
  echo "Not allowed";
}

【讨论】:

  • 我需要过滤非英文单词而不是字符,请问谁能帮忙?我希望使用 php 和文本文件以及大多数是英语的单词列表,有些不是也不属于 php 中最简单的方法来去除它们的非英语单词?大写或缺少不重要的词!
【解决方案2】:

使用这个:

if (!preg_match('/^[a-z0-9 .}, !@#$%^&*()_+|\';?><-]+$/i', $string)) 
{
  // commands
}

【讨论】:

  • 这与第一个示例不匹配。
  • if (! preg_match('%^[ -~]+$%', $string) ) { echo "Not allowed"; } 成功了!
猜你喜欢
  • 2012-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多