ホームページ  >  記事  >  バックエンド開発  >  PHPで文字列に中国語が含まれているかどうかを検出する方法

PHPで文字列に中国語が含まれているかどうかを検出する方法

青灯夜游
青灯夜游オリジナル
2022-09-22 19:10:556322ブラウズ

検出手順: 1. preg_replace() を正規表現とともに使用して、文字列をフィルタリングし、文字列内の中国語以外の文字を削除します。構文は "preg_replace("/[^\x{4E00}-\x{ 9FFF }] /u",'', 元の文字列)" は、すべての中国語文字を含むフィルター文字列を返します。 2. "===" を使用して、フィルター文字列が空の文字列であるかどうかを判断します。構文 "filter string ==" =''" に等しい場合、元の文字列には中国語の文字が含まれていません。それ以外の場合、元の文字列には中国語の文字が含まれています。

PHPで文字列に中国語が含まれているかどうかを検出する方法

このチュートリアルの動作環境: Windows 7 システム、PHP バージョン 8.1、DELL G3 コンピューター

PHP では、次のことができます。 preg_replace () 関数と「===」演算子を使用して、文字列に中国語の文字が含まれているかどうかを検出します。

実装手順:

ステップ 1: preg_replace() 関数と正規表現を使用して文字列をフィルタリングし、削除します文字列内の中国語以外の文字

preg_replace() 関数は、正規表現の検索と置換を実行できます。正規表現を使用する必要があるのは、文字列内の中国語以外の文字を検索し、それらを次の文字に置き換えることだけです。空文字 '' を使用してください。

正規表現は次のとおりです: /[^\x{4E00}-\x{9FFF}] /u

$pattern = "/[^\x{4E00}-\x{9FFF}]+/u";
$newStr=preg_replace($pattern,'', $str);

PHPで文字列に中国語が含まれているかどうかを検出する方法

すべての中国語文字を含むフィルター文字列を返します

ステップ 2: 「===」演算子を使用して、フィルター文字列が空の文字列かどうかを判断します

$newStr===''
  • #等しい場合、元の文字列には中国語が含まれていません

  • #等しくない場合、元の文字列には中国語が含まれています

  • #実装コード:

function f($str){
	echo "原字符串:";
	var_dump($str);
	$pattern = "/[^\x{4E00}-\x{9FFF}]+/u";
	$newStr=preg_replace($pattern,'', $str);
	if($newStr===''){
		echo "字符串中不包含中文
"; }else{ echo "字符串中包含中文
"; } }
上記の f($str) 関数を呼び出します

$str1= 'php中文网!-=1548';
f($str1);
$str2 = "123456";
f($str2);


PHPで文字列に中国語が含まれているかどうかを検出する方法説明:

preg_replace() 関数

preg_replace() 関数は正規表現の検索と置換を実行できます。強力な文字列置換処理関数です。この関数の構文形式は次のとおりです:

preg_replace($pattern, $replacement, $subject [, $limit = -1 [, &$count]])

パラメータの説明は次のとおりです:

$pattern: 検索されるパターンは文字列または文字列配列です。

##$replacement: 置換に使用される文字列または文字列配列。この引数が文字列で $pattern が配列の場合、すべてのパターンがこの文字列で置き換えられます。 $pattern と $replacement が両方とも配列の場合、各 $pattern は $replacement 内の対応する要素で置き換えられます。 $replacement の要素が $pattern よりも少ない場合、余分な $pattern は空の文字列に置き換えられます。
  • $subject: 検索および置換される文字列または文字列配列。$subject が配列の場合、検索および置換は $subject の各要素に対して実行され、戻り値も 1 つの配列になります。 。
  • $limit: オプションのパラメーター。各 $subject のパターンごとの置換の最大数。デフォルトは -1 (無限) です。
  • $count: オプションのパラメーターを指定した場合、完了した置換の数が入力されます。
  • $subject が配列の場合、preg_replace() 関数は配列を返し、それ以外の場合は文字列を返します。
  • 関数 preg_replace() が一致を見つけた場合は、置換された $subject を返します。そうでない場合は、変更されていない $subject を返します。 preg_replace() 関数の各パラメータ (パラメータ $limit を除く) は配列にすることができます。 $pattern パラメーターと $replacement パラメーターが両方とも配列の場合、関数は配列内に出現する順序でキーを処理します。エラーが発生した場合は NULL が返されます。

パラメータ $replacement には後方参照 \\n または $n を含めることができますが、構文的には後者の方が優先されます。このような各参照は、一致した n 番目のキャプチャ サブグループによってキャプチャされたテキストに置き換えられます。 n は 0 ~ 99 で、\\0 と $0 は完全なパターン マッチング テキストを表します。

キャプチャ サブグループのシリアル番号のカウント方法は次のとおりです。キャプチャ サブグループを表す左括弧は、1 から開始して左から右に数えられます。 $replacement でバックスラッシュを使用する場合は、4 ("\\\\" を使用する必要があります。これは、最初は PHP 文字列であり、エスケープ後は 2 になり、正規表現を通過した後は文字列とみなされます。エンジン。オリジナルのバックスラッシュ)。

置換モードで作業しており、後方参照の後に別の数値を続ける必要がある場合 (例: 一致するパターンの直後に元の数値を追加する)、構文 \\1 は使用できません。後方参照について説明します。たとえば、 \\11 を指定すると、 preg_replace() は \\1 後方参照の後に元の 1 が続くのか、それとも \\11 後方参照の後に何も続くのかを理解できなくなります。この場合の解決策は、${1}1 を使用することです。これにより、$1 の別の後方参照、つまりソース 1 の別の後方参照が作成されます。

当使用被弃用的 e 修饰符时,这个函数会转义一些字符(即:'、"、\ 和 NULL)然后进行后向引用替换。当这些完成后请确保后向引用解析完后没有单引号或双引号引起的语法错误(比如:'strlen(\'$1\')+strlen("$2")')。确保符合 PHP 的字符串语法,并且符合 eval 语法。因为在完成替换后,引擎会将结果字符串作为 php 代码使用 eval 方式进行评估并将返回值作为最终参与替换的字符串。

恒等式(===)运算符

恒等式(===)运算符是进行给定变量或值之间的严格比较;它比较,并查看两个变量(表达式或常量)是否值相等且具有相同的数据类型,即两者都是字符串或两者都是整数等等。

如果两个变量(表达式或常量)包含相同的值和相同的数据类型,则此运算符返回true,否则返回false。

示例:

<?php 
header("content-type:text/html;charset=utf-8");  
// 给变量赋整数值
$x = 999; 
echo &#39;$x=&#39;.$x."<br>"; 
// 给变量赋字符串值
$y = &#39;999&#39;; 
echo &#39;$y=&#39;.$y."<br>"; 
//比较$x 和$y 
if ($x === $y) 
    echo &#39;$x和$y相等&#39;; 
else
    echo &#39;$x和$y不相等&#39;; 
?>

输出:

PHPで文字列に中国語が含まれているかどうかを検出する方法

说明:在上面的例子中,$ x和$ y的值相等但数据类型不同,因而返回false,执行else部分。

推荐学习:《PHP视频教程

以上がPHPで文字列に中国語が含まれているかどうかを検出する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。