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


PHP: Allow only certain characters in string, without using regex

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

正如我所说,我看到了数百万个preg_match的例子,但我想建立我的,我只想允许:

1)所有大/小英文字母和数字

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890

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

اأإآبتثحخدذرزسشصضطظعغفقكلمنهويىءئ١٢٣٤٥٦٧٨٩٠

3) 以下特殊字符

,.()/-+&،

我想删除它的任何其他内容。

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

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

preg_replace("/[^...]/gu", "");
斜杠是

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

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