ホームページ  >  記事  >  バックエンド開発  >  PHP正規表現を使用して文字列を分割してエスケープするにはどうすればよいですか?

PHP正規表現を使用して文字列を分割してエスケープするにはどうすればよいですか?

WBOY
WBOYオリジナル
2021-11-01 15:46:233538ブラウズ

前回の記事では、『PHPで正規表現検索と置換を行うには? 》では、PHP で正規表現の検索と置換を実行するための関連知識を詳しく紹介していますが、この記事では引き続き、正規表現での文字列の分割とエスケープに関する関連知識を見ていきます。みんなに!

PHP正規表現を使用して文字列を分割してエスケープするにはどうすればよいですか?

前回の記事では、PHP でのグローバル正規表現マッチングの実行、特定のパターンに一致する配列要素の検出、正規表現検索の実行について学びました。このような操作は次の方法で置き換えることができます。 preg_match() 関数、preg_match_all() 関数、preg_grep() 関数、preg_replace() 関数を使用することで実現できます。正規表現を使用する主な目的は、強力な機能を簡単な方法で実現することです。

正規表現と文字列の間には、正規表現を使用して文字列を分割するなど、多くの操作があります。次に、文字式を使用して文字列を分割する方法を見てみましょう。

<strong><span style="font-size: 20px;">preg_split() </span></strong>関数

at PHP では、preg_split() 関数は正規表現を使用して文字列を分割します。この関数の構文形式は次のとおりです:

array preg_split ( string $pattern , string $subject [, int $limit = -1 [, int $flags = 0 ]] )

注意する必要があるのは:

$pattern はマッチングに使用されるパターン、つまり正規表現を表します; $subject は分離される文字列を表します; $limitはオプションのパラメータです。指定した場合、limit で区切られた部分文字列は最大でも limit に制限され、最後の部分文字列には残りが含まれます。制限値が -10、または NULL の場合、「制限なし」を意味するため、NULL を使用することをお勧めします。

$flags は、3 つの値を持つオプションのパラメーターです。 PREG_SPLIT_NO_EMPTY に設定すると、preg_split() は分離された空でない部分を返します。 PREG_SPLIT_DELIM_CAPTURE に設定すると、区切り文字で区切られたパターン内の括弧式がキャプチャされて返されます。 PREG_SPLIT_OFFSET_CAPTURE に設定すると、一致が発生するたびに文字列オフセットが戻り値に追加されます。

これにより、返された配列の各要素が変更され、各要素が 0 番目の要素で区切られた部分文字列になり、最初の要素が主題の部分文字列のオフセットになるようになります。数量の配列。戻り値は、パターンを使用して対象の文字列を分割した後に得られる部分文字列で構成される配列です。

次に、例を通して preg_split() 関数の使用法を見てみましょう。例は次のとおりです:

<?php
    echo "<pre class="brush:php;toolbar:false">";
    $subject = &#39;PHP中文网:http://www.php.cn/, baidu百度:http://www.baidu.com/&#39;;
    $pattern = &#39;/[\s,:]+/&#39;;
    print_r( preg_split($pattern, $subject) );
    print_r( preg_split($pattern, $subject, 3) );
?>

出力結果:

PHP正規表現を使用して文字列を分割してエスケープするにはどうすればよいですか?

例は次のとおりです:

<?php
$str = &#39;father mother andyou&#39;;
var_dump($str);
$chars = preg_split(&#39;/ /&#39;, $str, -1, PREG_SPLIT_OFFSET_CAPTURE);
var_dump($chars);
?>

出力結果:

PHP正規表現を使用して文字列を分割してエスケープするにはどうすればよいですか?

上記の例からわかるように、 、 preg_split() 関数を使用すると、文字列を分割するための true 式を完成させることができます。次に、正規表現をエスケープする方法を見てみましょう。

<strong><span style="font-size: 20px;">PHP preg_quote()</span></strong>## 関数

一般的な文字にはすべてが含まれますすべての大文字と小文字、数字、句読点、および一部の記号を含む、メタキャラクターとして明示的に指定されていない印刷可能文字および印刷不可能な文字。最も単純な正規表現は、検索文字列の比較に使用される単一の通常の文字です。たとえば、1 文字の正規表現 /A/ は常に文字 A と一致します。

正規表現には、通常の文字に加えて「メタ文字」を含めることもできます。メタキャラクターは、単一文字のメタキャラクターと複数文字のメタキャラクターに分類できます。たとえば、メタ文字 \d は数字と一致します。

PHP

preg_quote() この関数は、正規表現文字列をエスケープする、つまり特殊文字の前にバックスラッシュ \ を追加するために使用されます。構文形式は次のとおりです:

preg_quote($str [, $delimiter = NULL])

次の点に注意してください:


$str は正規表現文字列を表し、$delimiterオプションのパラメータであり、エスケープする必要がある追加の文字です。 $delimiter パラメータが指定されている場合、指定された文字もエスケープされます。これは通常、PCRE 関数で使用される区切り文字をエスケープするために使用されます。 / は最も一般的な区切り文字です。

preg_quote() この関数は、パラメーター $str で指定された各正規表現文字の前にバックスラッシュを追加します。これは通常、ランタイム文字列を正規表現として照合する必要がある場合に使用されます。

正则表达式特殊字符有:. \ + * ? [ ^ ] $ ( ) { } = ! <code>> | : -    。要清楚/不是正则表达式特殊字符。

接下来我们通过示例来看一下使用 preg_quote() 函数对字符串进行转义,示例如下:

<?php
    $url = &#39;http://www.baidu.com/&#39;;
    echo preg_quote($url) . "<br />";
    echo preg_quote($url, "/") . "<br />";
    $textbody = "baidu百度 is *very* good to study.";
    $word     = "*very*";
    echo preg_replace( "/".preg_quote($word)."/", "<i>".$word."</i>", $textbody );
?>

输出结果:

PHP正規表現を使用して文字列を分割してエスケープするにはどうすればよいですか?

示例如下:

<?php
$keywords = &#39;$40 for a g3/400&#39;;
$keywords = preg_quote($keywords, &#39;/&#39;);
echo $keywords; // 返回 \$40 for a g3\/400
?>

输出结果:

PHP正規表現を使用して文字列を分割してエスケープするにはどうすればよいですか?

上述示例中,便是通过preg_quote() 函数用来对正则表达式字符串进行转义。

大家如果感兴趣的话,可以点击《PHP视频教程》、《正则表达式手册》进行更多关于PHP和正则表达式知识的学习。

以上がPHP正規表現を使用して文字列を分割してエスケープするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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