如何使用PHP验证符合指定标点规则的输入句子?
PHP 输入验证功能实现
问题原因
- 原有代码使用的
ctype_alnum()函数仅支持校验字母和数字,规则中允许的空格、点号、单引号、逗号都会被判定为非法,因此无法满足验证需求。
实现方案
使用正则匹配校验输入内容,仅放行规则允许的字符即可,代码示例如下:
<?php // 测试输入 注意要使用英文直单引号,弯单引号属于Unicode字符会被拦截 $x = 'Life is what happens when you\'re busy making other plans.'; // 验证规则:仅允许大小写字母、数字、空格、点号、英文单引号、逗号 if (preg_match('/^[a-zA-Z0-9\s.\',]*$/', trim($x))) { echo 'true'; } else { echo 'false'; } ?>
正则说明
^和$分别匹配字符串的开头和结尾,确保所有字符都在允许范围内- 中括号
[]内定义允许的字符集合:a-zA-Z0-9匹配所有英文大小写字母、数字\s匹配空白字符(如空格、制表符,不需要可替换为普通空格).',分别匹配规则允许的点号、单引号、逗号
*表示允许空输入,若要求输入不能为空可替换为+
该方案会自动拦截斜杠、HTML标签、Unicode字符等所有不在允许列表内的内容,完全符合提出的四条规则。
内容的提问来源于stack exchange,提问作者Anirudh Singh
相关产品推荐
相关产品推荐

