[php] 正規表現サンプル

個人的によく使うものを晒します。

スクリプト・HTMLコメント除去

function replace_scripts($str)
{
	$str = preg_replace('/<(script|style).*?<\/(script|style)>/sm','', $str);//script
	$str = preg_replace("/<\!--.*-->/sm", '', $str); //comments
	return $str;
}

mはマルチライン指定

ファイル名の拡張子直前に文字列追加

サムネイル作成する時の定番

preg_replace("/([\d\w\-\_\.]+?)(\.[\w]+?)/i","$1_thumb$2",$filename);

メールアドレスチェック

真贋までは分かりません。

if(preg_match("/^([a-z0-9_]|\-|\.|\+)+@(([a-z0-9_]|\-)+\.)+[a-z]{2,6}$/i",$str)){
	//true
}else{
	//false
}

URLチェック

真贋までは分かりません。

if(preg_match('/^(https|http)(:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)$/', $value)) {
	//true
}else{
	//false
}

電話番号チェック

以前のエントリーで晒したのと同じ

$str = mb_convert_kana($str, "n", "UTF-8");
if(strpos($str,"-")===false){//ハイフンなし
	if (preg_match("/(^(?<!090|080|070)\d{10}$)|(^(090|080|070)\d{8}$)|(^0120\d{6}$)|(^0080\d{7}$)/", $str)) {
		//true
	}else{
		//false
	}
}else{//ハイフンあり
	if (preg_match("/(^(?<!090|080|070)(^\d{2,5}?\-\d{1,4}?\-\d{4}$|^&#91;\d\-&#93;{12}$))|(^(090|080|070)(\-\d{4}\-\d{4}|&#91;\\d-&#93;{13})$)|(^0120(\-\d{2,3}\-\d{3,4}|&#91;\d\-&#93;{12})$)|(^0080\-\d{3}\-\d{4})/", $str)) {
		//true
	}else{
		//false
	}
}
&#91;/php&#93;

<h2>郵便番号チェック</h2>
ハイフンあり・なし両方。

if (preg_match("/(^\d{3}\-\d{4}$)|(^\d{7}$)/", $str)) {
	//true
}else{
	//false
}

全て数字かどうか

if (preg_match("/^[0-9]+$/", $str)) {
	//true
}else{
	//false
}

基本的に、「全て英数かどうか」「全てひらがなかどうか」というチェックは、
上記数字の[0-9]を[A-Za-z]や[あ-ん]と変更すればおk。

日本語の有無をチェック

全部半角英数だったらエラーにする

if(preg_match("/^[\x01-\x7e]+$/",$str)){
	//true
}else{
	//false
}

Leave a Comment.