PHP:3桁毎にカンマが入っているかどうかをチェック

if(ereg("^[0-9]{0,3}$",$str)){
    //3桁以内なのでそのまま
    return $str;
}else if(ereg("^[0-9]{1,3}(,[0-9]{3})*,[0-9]{3}$", $str)){
    //3桁毎に区切られているのでそのまま
    return $str;
}else if(ereg("^[0-9]{3,}$",$str)){
    //3桁毎に区切られていないのでカンマを入れる
    $str = number_format($str);
    return $str;
}else{
    //2桁毎にカンマが入っている場合・数字以外が含まれている等
    print "不正な文字列です。";
}


PHP:E-mailアドレスをチェック

■簡易的なE-mailアドレスチェック

if(ereg('^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+
    '.'@'.'[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+
    \.'.'[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$', $email)){
    print "メールアドレスの可能性がある";
}else{
    print "メールアドレスではない";
}

続きを読む "PHP:E-mailアドレスをチェック"


PHP:URLにリンクを貼る

■テキストに含まれるURLに自動的にリンクを貼るサンプル

$text = <<<END
サイト名:スイートボートブログ
URL:http://blog.livedoor.jp/sweetbeach/
END;

$text = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]",
    "<a href=\"\\0\" target=\"_blank\">\\0</a>", $text);
print $text;

※上記の結果、

サイト名:スイートボートブログ
URL:http://blog.livedoor.jp/sweetbeach/

のように出力されます。

※実際にはURLには記載通りのリンクが貼られます。


PHP:エスケープシークエンスについて

正規表現の基本となるエスケープシークエンスの一覧です。
正規表現において、\nなど\が直前についた文字は特殊な意味を持つ場合があります。

続きを読む "PHP:エスケープシークエンスについて"


PHP:キャラクタクラス・正規表現の繰り返し

正規表現の基本となるキャラクタクラス・量指定子の一覧です。
[0-9]、[a-zA-Z]などのキャラクタクラスは頻繁に使用するので覚えておくと便利です。

続きを読む "PHP:キャラクタクラス・正規表現の繰り返し"


PHP:メールアドレスにリンクを貼る

■テキストに含まれるメールアドレスに自動的にリンクを貼るサンプル

$text = <<<END
このサイトは「STUDIO WING.lib」です。
E-mail:aaa@aaa.co.jp
END;

$text = ereg_replace("([a-zA-Z0-9_\.-]+\@)([a-zA-Z0-9_\.-]+)([a-zA-Z]+)",
    "<a href=\"mailto:\\1\\2\\3\">\\1\\2\\3</a>", $text);
print $text;

※上記の結果、

このサイトは「STUDIO WING.lib」です。
E-mail:aaa@aaa.co.jp

のように出力されます。


PHP:メタ文字について

正規表現の基本となるメタ文字の一覧です。
メタ文字とは、*や+など、正規表現において文字単体で特殊な意味を持つ文字です。

続きを読む "PHP:メタ文字について"


PHP:文字列が半角数字のみかチェック

if(ereg("^[0-9]+$", $str)){
    print "半角数字のみ";
}else{
    print "半角数字以外も含まれている(値なしも含む)";
}


PHP:文字列の先頭が空白・タブかどうかをチェック

if(ereg("^[ \t]+", $str)){
    print "先頭はタブまたは空白";
}else{
    print echo "先頭はタブおよび空白ではない";
}


PHP:文末が改行かどうかをチェック

if(ereg("[\n\r]$", $str)){
    print "文末は改行または空白文字";
}else{
    print "文末は改行・空白文字ではない";
}