9

有効な電子メールアドレスのサンプル:

「これは有効なアドレスです」@example.com

PHPコード:

<?php
header('Content-Type: text/plain');

$email = '"this is a valid address"@example.com';
$checked = filter_var($email, FILTER_VALIDATE_EMAIL);
var_dump($email, $checked);

1台のサーバーでの出力:(PHPバージョン5.2.6):

string(37)""これは有効なアドレスです"@example.com"
string(37)""これは有効なアドレスです"@example.com"

phpinfo()

Input Validation and Filtering      enabled
Revision                            $Revision: 1.52.2.42 $

Directive             Local Value   Master Value
filter.default        unsafe_raw    unsafe_raw
filter.default_flags  no value      no value

別のサーバーでの出力(PHPバージョン5.3.3):

string(37)""これは有効なアドレスです"@example.com"
bool(false)

phpinfo()

Input Validation and Filtering      enabled
Revision                            $Revision: 298196 $

Directive             Local Value   Master Value
filter.default        unsafe_raw    unsafe_raw
filter.default_flags  no value      no value

これが変更されたことを示唆するドキュメントには何も表示されないため、おそらく他の構成設定です。

4

1 に答える 1

6

http://3v4l.org/vKONSでわかるように、フィルターの使用法はFILTER_VALIDATE_EMAIL一貫していません。

PHP 5.2.0、5.2.14〜5.2.17、5.3.3〜5.3.18、5.4.0〜5.4.8のhttp://3v4l.org/vKONS出力

string(37) ""this is a valid address"@example.com" 
bool(false)

および5.2.1〜5.2.13、5.3.0〜5.3.2の場合

string(37) ""this is a valid address"@example.com" 
string(37) ""this is a valid address"@example.com"

5.2.0では機能しましたが、5.2.1-5.2.13では機能せず、5.2.14でも機能したことは注目に値します。

ところで、 3v4l.orgは、利用可能なすべてのPHPバージョンでこのような動作の変化を確認するための優れたリソースです。

FILTER_VALIDATE_EMAILという用語を含むいくつかのバグが開いていますが、あなたの種類のエラーに一致するものはないようですあなたはそれをPHPバグトラッカーに追加するかもしれません...

于 2012-11-21T13:20:40.923 に答える