在 PHP 中检查 SPF
Checking SPF in PHP
IT 服务提供商必须在 Internet 上编写我们的 SPF 更改,我只是邮寄我的说明。
我在 PHP 中创建了一个程序来检查我的所有域,看看它是否正确(有时错误的复制粘贴包含错误的字符)
我尝试用
测试 SPF
if (strpos(strtolower($spf), 'v=spf')
但这不会检查坏字符
我试过 preg_match 但它不起作用
一条spf记录只能包含这些字符
[a-z] [0-9] 。 ? - ~ (space) 且必须以 v=spf
开头
所有其他字符必须回显 "Invalid syntax"
示例:
$spfdata='v=spf1 mx 1.2.3.4 ~all';
if (preg_match('/(v=spf)([a-z0-9-~?.])/i', $spfdata)){
echo "SPF seems to be ok";
} else {
echo "Invalid syntax";
}
这不起作用它总是说 "ok" 即使我输入了一个错误的字符。
您可以使用
'/^v=spf[a-z0-9~? .-]+$/i'
或者,如果您想允许任何类型的空格:
'/^v=spf[a-z0-9~?\s.-]+$/i'
PHP代码:
$spfdata='v=spf1 mx 1.2.3.4 ~all';
if (preg_match('/^v=spf[a-z0-9~?\s.-]+$/i', $spfdata)){
echo "SPF seems to be ok";
} else {
echo "Invalid syntax";
}
正则表达式匹配
^
- 字符串开头
v=spf
- 文字文本
[a-z0-9~?\s.-]+
- 1+ 个 ASCII 字母、数字、~
、?
、空格、.
或 -
$
- 字符串结尾。
我不知道为什么,但是当我删除第一个块 (v=spf) 时,正则表达式似乎不错
我尝试了很多不同的东西,终于成功了(我用 ^ 颠倒了逻辑)
所以正则表达式显示 "if your are NOT in the bracket expression you are ok"
$spfdata='v=spf1 mx 1.2.3.4 ~all';
if (preg_match('#[^a-z0-9 :\+=.\-~\?]#', $spfdata)){
echo "Invalid syntax";
} else {
echo "SPF seems to be ok";
}
IT 服务提供商必须在 Internet 上编写我们的 SPF 更改,我只是邮寄我的说明。
我在 PHP 中创建了一个程序来检查我的所有域,看看它是否正确(有时错误的复制粘贴包含错误的字符)
我尝试用
测试 SPFif (strpos(strtolower($spf), 'v=spf')
但这不会检查坏字符
我试过 preg_match 但它不起作用
一条spf记录只能包含这些字符 [a-z] [0-9] 。 ? - ~ (space) 且必须以 v=spf
开头所有其他字符必须回显 "Invalid syntax"
示例:
$spfdata='v=spf1 mx 1.2.3.4 ~all';
if (preg_match('/(v=spf)([a-z0-9-~?.])/i', $spfdata)){
echo "SPF seems to be ok";
} else {
echo "Invalid syntax";
}
这不起作用它总是说 "ok" 即使我输入了一个错误的字符。
您可以使用
'/^v=spf[a-z0-9~? .-]+$/i'
或者,如果您想允许任何类型的空格:
'/^v=spf[a-z0-9~?\s.-]+$/i'
PHP代码:
$spfdata='v=spf1 mx 1.2.3.4 ~all';
if (preg_match('/^v=spf[a-z0-9~?\s.-]+$/i', $spfdata)){
echo "SPF seems to be ok";
} else {
echo "Invalid syntax";
}
正则表达式匹配
^
- 字符串开头v=spf
- 文字文本[a-z0-9~?\s.-]+
- 1+ 个 ASCII 字母、数字、~
、?
、空格、.
或-
$
- 字符串结尾。
我不知道为什么,但是当我删除第一个块 (v=spf) 时,正则表达式似乎不错 我尝试了很多不同的东西,终于成功了(我用 ^ 颠倒了逻辑)
所以正则表达式显示 "if your are NOT in the bracket expression you are ok"
$spfdata='v=spf1 mx 1.2.3.4 ~all';
if (preg_match('#[^a-z0-9 :\+=.\-~\?]#', $spfdata)){
echo "Invalid syntax";
} else {
echo "SPF seems to be ok";
}