【 実用共通関数 】

1. キャリッジリターン出力関数
2. 挟み込み関数
3. 目的別挟み込み関数
4. SQLの in(値のリスト) のような関数
5. 日本語を含んだ入力フィールドの妥当性チェック

# **********************************************************
# 改行付表示関数
# **********************************************************
function OutCr( $strValue ) {
 
	print $strValue . "\n";
 
}
  • 行コメントに "#" を使用しているのは、他の言語と区別しやすい事が理由です。"//" でも特に
    問題はありません

  • 出力に改行をつけるかどうかは、結果のソースコードを見る時に変わってきます。ブラウザは改
    行を必要としなくとも、人間が読むには不向きです

  • print を使用すると、イザという時にバイパスできません。可能性としては、全ての出力を無効
    にしたり、ファイルへの出力がこの関数一つでコントロールできる事になります


  • # **********************************************************
    # 挟み込み関数
    # **********************************************************
    function Enclose( $strValue, $Chr, $Type, $Option="" ) {
     
    	$strRet = "";
     
    	switch( $Type ) {
    		# 単純挟み込み
    		case 0:
    			$strRet = $Chr . $strValue . $Chr;
    			break;
    		# HTML挟み込み
    		case 1:
    			$strRet = "<" . $Chr . " " . $Option . ">";
    			$strRet .= $strValue;
    			$strRet .= "</" . $Chr . ">";
    			break;
    	}
     
    	return $strRet;
     
    }
    
  • HTMLページや、SQLの文字列を作成していると。ある特定の文字列で文字列を挟み込む場面
    に良く遭遇します。これは、それぞれの目的にあわせた関数から呼ばれるコアな関数です

  • 文字列の連結に常に「ピリオド」を使用しているのは、他の言語への移行を意図しています。
    特にASPの事を考えるならば、共通関数内で文字列のパースををする必要は無いでしょう


  • 関数名がやたらと短いのは、使いやすさが理由です。実際にソースコード上に書いてみると、
    その効能は明らかです

  • # **********************************************************
    # ' 挟み込み関数
    # **********************************************************
    function Ss( $strValue ) {
     
    	return Enclose( $strValue, "'", 0 );
     
    }
     
    # **********************************************************
    # " 挟み込み関数
    # **********************************************************
    function Dd( $strValue ) {
     
    	return Enclose( $strValue, "\"", 0 );
     
    }
     
    # **********************************************************
    # TH 挟み込み関数
    # **********************************************************
    function Th( $strValue, $Option="" ) {
     
    	return Enclose( $strValue, "TH", 1, $Option );
     
    }
     
    # **********************************************************
    # TD 挟み込み関数
    # **********************************************************
    function Td( $strValue, $Option="" ) {
     
    	return Enclose( $strValue, "TD", 1, $Option );
     
    }
    

    # **********************************************************
    # リスト内の文字列と一致するかどうかのチェック
    # **********************************************************
    function ChkCase( $strTarget, $strList ) {
     
    	$Ret = array_search( $strTarget, explode( ",", $strList ) );
    	if ( $Ret === FALSE ) {
    		return FALSE;
    	}
    	else {
    		return TRUE;
    	}
     
    }
    

    # **********************************************************
    # 文字列内の全ての文字が任意の文字列集合に属しているか
    # **********************************************************
    function ChkGroup( $strTarget, $strGroup ) {
     
    	$eucTarget	= mb_convert_encoding ( $strTarget, "EUC-JP", "SJIS" );
    	$eucGroup	= mb_convert_encoding ( $strGroup, "EUC-JP", "SJIS" );
     
    	for( $i = 0; $i < mb_strlen( $eucTarget, "EUC-JP" ); $i++ ) {
    		$Moji = mb_substr( $eucTarget, $i, 1, "EUC-JP" );
    		$Ret = mb_strpos( $eucGroup, $Moji, 0 , "EUC-JP" );
    		if ( $Ret === FALSE ) {
    			return FALSE;
    		}
    	}
    	return TRUE;
     
    }
    
  • extension=php_mbstring.dll のエントリが、php.ini に必要です

  • エンコーディングを EUC に統一しておいたほうが汎用性が増しますし、マルチバイト文字列関数
    の使用方法のヒントでもあります