基本的な PHP 開発チュート...LOGIN

基本的な PHP 開発チュートリアル: 正規表現のアトム

1. アトム

アトムは正規表現の最小単位であり、端的に言えば、アトムは照合する必要がある内容です。有効な正規表現には、少なくとも 1 つのアトムが含まれている必要があります。

表示される文字も不可視の文字もすべてアトムです

注: スペース、キャリッジ リターン、ライン フィード、0 ~ 9、A-Za-z、中国語、句読点、および特殊記号はすべてアトムです。

アトミックな例を行う前に、まず関数 preg_match:

構文:

int preg_match (string $ Regular, string $string[, array &$result])

関数: $ に基づく通常の変数は、$string 変数と一致します。存在する場合は、一致の数を返し、一致した結果を $result 変数に入れます。一致する結果がない場合は、0 が返されます。 注: 上記は、preg_match で一般的に使用される主なパラメータです。他のいくつかのパラメーターは上にリストしませんでした。他の 2 つのパラメーターがあまりにも一般的でないためです。

プログラムを通して確認しましょう:

例: コードは次のとおりです

<?php
//定义一个变量pattern,存放正则表达式
$pattern = '/a/';
//待搜素字段
$string = 'ddfdjjvi2jfvkwkfi24';
//判断,如果匹配到了,输出$matcges的值
if(preg_match($pattern, $string, $matches)){
    echo '匹配到了,结果为:';
    var_dump($matches);
}else{
    echo '没有匹配到';
}
?>
結果:

なぜなら、私が望んでいるのは a と一致することであり、$string は存在しないからです。失敗した。

この例を変形します

例: コードは次のとおりです

<?php
//定义一个变量pattern,存放正则表达式
$pattern = '/f/';
//待搜素字段
$string = 'ddfdjjvi2jfvkwkfi24';
//判断,如果匹配到了,输出$matcges的值
if(preg_match($pattern, $string, $matches)){
    echo '匹配到了,结果为:';
    var_dump($matches);
}else{
    echo '没有匹配到';
}
?>
結果:

上記の文字列には f があるため、一致は成功します

次に、スペースを一致させてみましょう:

例: 以下のように

<?php
$zz = '/ /';
$string = 'sssssw aaaaa';
if(preg_match($zz, $string, $matches)){
    echo '匹配到了,结果为:';
    var_dump($matches);
}else{
    echo '没有匹配到';
}
?>
結果:

このため、$string 変数の w 文字の後にスペースが入ります。したがって、一致は成功し、文字列型が長さ 1 で出力されます。ただ、私たちの肉眼は目に見えず、この文字列を見ることができません。

2. 特別にマークされた原子

19.png 注: ここにあるそれぞれの原子は記憶する必要があり、ディクテーションレベルに達することが最善です。覚えるときは、d は 0 ~ 9 に一致し、D は 0 ~ 9 を除くすべての文字であることをペアで覚えてください。

上記は非常にわかりやすく説明されています。これらを段階的に学習するために実験を行ってみましょう。


学習する際は、これらの原子のディクテーションレベルに必ず到達してください。将来実験をするときに少しずつ学んでいくからです。

Three、d は 0-9 に一致します

コードは次のとおりです:

<?php
$zz = '/\d/';

$string = '床9前明月光';

if(preg_match($zz, $string, $matches)){
    echo '匹配到了,结果为:';
    var_dump($matches);
}else{
    echo '没有匹配到';
}

?>

Four. D は 0-9 以外の値に一致します

例: コードは次のとおりです

<?php
header("Content-type:text/html;charset=utf-8");
$zz = '/\D/';
$string = '121243中23453453';
if(preg_match($zz, $string, $matches)){
    echo '匹配到了,结果为:';
    var_dump($matches);
}else{
    echo '没有匹配到';
}
?>

Five. w は次のような a-zA-Z0-9_

の例に一致します

<?php
$zz = '/\w/';

$string = '新中_国万岁呀万岁';

if(preg_match($zz, $string, $matches)){
    echo '匹配到了,结果为:';
    var_dump($matches);
}else{
    echo '没有匹配到';
}

?>

6. W は次のような非 a-zA-Z0-9_

の例に一致します

<?php
$zz = '/\W/';

$string = 'afasABCWEQR44231284737';

if(preg_match($zz, $string, $matches)){
    echo '匹配到了,结果为:';
    var_dump($matches);
}else{
    echo '没有匹配到';
}

?>

7. s はスペース以外の空白文字すべてに一致します

例は次のとおりです

<?php
$zz = '/\s/';

$string = "中国万
岁";

if(preg_match($zz, $string, $matches)){
    echo '匹配到了,结果为:';
    var_dump($matches);
}else{
    echo '没有匹配到';
}

?>

8. S 空でない文字

例は次のとおりです

<?php
$zz = '/\S/';

$string = "        
          a       ";

if(preg_match($zz, $string, $matches)){
    echo '匹配到了,结果为:';
    var_dump($matches);
}else{
    echo '没有匹配到';
}

?>

は正常に照合されました。スペースはありますが、改行とインデントが表示されます。ただし、空白以外の文字 a が存在します。したがって、試合は成功です。

9. [] アトムの範囲を指定する例

は次のとおりです

<?php

$zz = '/[0-5]\w+/';

$string = '6a';

$string1 = '1C';

if(preg_match($zz, $string, $matches)){
    echo '匹配到了,结果为:';
    var_dump($matches);
}else{
    echo '没有匹配到';
}

?>

$stringを$string1に再度変更して、一致するかどうかを確認してください

結論:
0-上の例 5 は $string と一致しませんが、$string1 は成功します。 $string の最初の値は 6 であり、[0-5] の範囲内にないためです。

10. [^ 文字] は指定された範囲の文字と一致しません

コードは次のとおりです:

<?php

$zz = '/[^0-9A-Za-z_]/';

$string = 'aaaaab311dd';

$string1 = '!$@!#%$#^##';

if(preg_match($zz, $string, $matches)){
    echo '匹配到了,结果为:';
    var_dump($matches);
}else{
    echo '没有匹配到';
}

?>

結論:

$string のマッチングは失敗しましたが、$string1 のマッチングでは成功しました。角括弧内にサーカムフレックス文字があるためです。

^ 角括弧内のサーカムフレックス文字の機能は、角括弧内の文字と一致することではありません。

11. 概要

20.png

次のセクション
<?php //定义一个变量pattern,存放正则表达式 $pattern = '/a/'; //待搜素字段 $string = 'ddfdjjvi2jfvkwkfi24'; //判断,如果匹配到了,输出$matcges的值 if(preg_match($pattern, $string, $matches)){ echo '匹配到了,结果为:'; var_dump($matches); }else{ echo '没有匹配到'; } ?>
コースウェア