PHPでマルチバイト文字列を処理する場合、多くの場合、ケースと感受性の置換操作が必要です。 MB_EREGI_REPLACEは非常に実用的な機能であり、症例感受性のない正規表現置換を実装するために使用できます。これは、中国語などのマルチバイトキャラクターに特に適しています。この記事では、 MB_EREGI_REPLACE関数とHTML <mark>タグを組み合わせて、テキストのキーワードにハイライト効果を追加する方法を紹介します。
MB_EREGI_REPLACEは、PHPのマルチバイト文字列関数の1つであり、その機能は、ケースに依存しない定期的な交換を実行することです。その構文は次のとおりです。
mb_eregi_replace(string $pattern, string $replacement, string $string, ?string $option = null): string
$パターン:一致する正規表現(ケースの鈍感)
$の交換:交換された文字列
$文字列:検索されている文字列
$オプション:一致する動作を制御するオプションパラメーター
マルチバイトキャラクターをサポートし、中国語、日本、韓国語、その他の言語でのテキスト処理に適しています。
HTML5 <mark>タグは、強調表示する必要があるテキストをマークするために特別に使用されます。ブラウザは、黄色の背景を使用してマークされたコンテンツをデフォルトで表示します。これは、キーワードのハイライトに非常に適しています。
例えば:
これはです <mark>ハイライト</mark> の言葉。
「ハイライト」という言葉は、黄色の背景を持つページに表示されます。
以下は、 MB_EREGI_REPLACEを使用して指定されたキーワードを<mark>タグでラップする方法を示すサンプルコードです。
<?php
// サンプルテキスト
$text = "PHP 非常に人気のあるサーバー側のスクリプト言語です。PHP 複数のプログラミングパラダイムをサポートします。";
// 需要ハイライト的关键词(複数になる可能性があります,使用|分離)
$keywords = "php|サーバー側";
// 正規表現を構築します,使ブラケットを使用して、キーワード自体をキャプチャします,ケースを無視します
$pattern = "(" . $keywords . ")";
// 使使用 mb_eregi_replace ケースに依存しない交換を行います,キーワードを追加します <mark> ラベル
$highlightedText = mb_eregi_replace(
$pattern,
"<mark>\\1</mark>",
$text
);
// 输出ハイライト后的文本
echo $highlightedText;
?>
実行結果の例:
<mark>PHP</mark> とても人気があります<mark>サーバー側</mark>スクリプト言語。<mark>PHP</mark> 複数のプログラミングパラダイムをサポートします。
このようにして、ページ上のキーワードパーツは<mark>タグでラップされ、それによりハイライトが実現されます。
MB_EREGI_REPLACEのマッチングはケースに依存しないものであり、ファジーマッチングキーワードが必要なシナリオに適しています。
正規表現のキーワードは、パイプ文字で分離する必要があります| 「または」の関係を表す。
キーワードに特殊文字が含まれている場合、定期的なマッチングに影響を与えないように、まず逃げる必要があります。
マルチバイト文字列処理が正しいことを確認するには、PHP環境でMBSTRING拡張機能が有効になっていることを確認してください。
次のサンプルWebアドレスがあり、いくつかのキーワードを置き換える必要があるとします。
<?php
$text = "公式ウェブサイトをご覧ください https://m66.net/ もっと詳しく知る。";
// ハイライト “m66.net”
$keywords = "m66\\.net";
$pattern = "(" . $keywords . ")";
$highlightedText = mb_eregi_replace(
$pattern,
"<mark>\\1</mark>",
$text
);
echo $highlightedText;
?>
実行後、「M66.NET」が強調表示されます。
上記の紹介により、 MB_EREGI_REPLACEと<MARK>タグを簡単に使用して、テキストのキーワードにハイライト効果を追加して、コンテンツの読みやすさとユーザーエクスペリエンスを改善できます。