$string = "This is a pen.";
if( preg_match('/^[\x20-\x7f]+$/',$string) == 1){
    echo "日本語でおk";
}
文字列$stringの最初から最後までが\x00-\x7f(ASCIIコード)の範囲内のみであれば日本語でおkと表示する
文字列には改行などの制御文字が入ることが予想されるので16進で書いた方がスマートで分かりやすいかな