PHP:只允许字符串中的某些字符,而不使用正则表达式

DeZ*_*gny 4 php

我想只允许字符串中的某些字符,我知道使用preg_match很容易,但这个函数我多年来都无法理解:/

正如我所说,我看到了数以百万计的preg_match示例,但我想构建我的,我只想允许:

1)所有上/下英文字母和数字

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890

2)所有阿拉伯字母和数字

اأإآبتثحخدذرزسشصضطظعغفقكلمنهويىءئ1234567890

3)以下特殊字符

,()/ - +,

还有什么我想要删除它.

Ama*_*dan 6

您需要先了解正则表达式.它们是编程中的一般概念,并且有比PHP手册更好的阅读它们的地方.试试regular-expressions.info.

对于您的特定问题,您需要字符类模式:[...]将匹配括号内的任何字符.如果你在开头用帽子写它,它将匹配括号中没有的任何字符:[^...].你想用什么都不替换所有不匹配的字符,所以你可以使用这个函数preg_replace:

preg_replace("/[^...]/gu", "");
Run Code Online (Sandbox Code Playgroud)

斜杠是必需的分隔符(斜杠是传统的,但还有其他东西可以使用),"g"表示"全局",如"替换所有出现,而不仅仅是第一个","u"表示"unicode" ,这将允许你捕捉阿拉伯字符和最后奇怪的特殊字符.

现在,你可以列出我放点的所有字符; 或者您可以指定字符范围.例如,[^a-zA-Z0-9,.\/+&-]匹配任何字母数字英文字符,以及除最后的奇怪字符之外的所有特殊字符:p.请注意,您需要使用反斜杠转义斜杠(因为否则它将终止正则表达式),并且您需要将减号作为最后一个(否则它将被解释为字符范围).您可以根据需要扩展其他语言(我对阿拉伯语的编码不够熟悉).