PHP正则表达式替换实现是如何的呢?首先向你介绍下PHP preg_replace,PHP preg_replace的使用是我们实现的方法,那么对于PHP正则表达式替换实现过程我们从实例入手。
PHP正则表达式替换的相关概念:
preg_replace:执行正则表达式的搜索和替换
<ol class="dp-c"> <li class="alt"><span><span>mixed preg_replace ( </span></span></li> <li><span>mixed pattern, </span></li> <li class="alt"><span>mixed replacement, </span></li> <li><span>mixed subject [, int limit]) </span></li> </ol>
preg_replace:允许你替换字符串中匹配到你定义的正则表达式。一个简单的注释移除功能:
<ol class="dp-c"><li class="alt"><span><span>preg_replace(</span><span class="string">'[(/*)+.+(*/)]'</span><span>, </span><span class="string">''</span><span>, </span><span class="vars">$val</span><span>); </span></span></li></ol>
这段代码可以移除在 PHP 和 CSS 中使用 /* 注释 */ 格式的多多行注释。其中的三个参数分别为正则表达式,要替换成的字符串和要替换的目标字符串(这里要做移除功能,所以是个空白字符串 -> '')。如果你想匹配次级规则,可以使用 $0 代表全部匹配,$1、$2 等,以此类推代表分别的次级规则。
在 subject 中搜索 pattern 模式的匹配项并替换为 replacement。如果指定了 limit,则仅替换 limit 个匹配,如果省略 limit 或者其值为 -1,则所有的匹配项都会被替换。
replacement 可以包含 //n 形式或(自 PHP 4.0.4 起)$n 形式的逆向引用,首选使用后者。每个此种引用将被替换为与第 n 个被捕获的括号内的子模式所匹配的文本。n 可以从 0 到 99,其中 //0 或 $0 指的是被整个模式所匹配的文本。对左圆括号从左到右计数(从 1 开始)以取得子模式的数目。
对替换模式在一个逆向引用后面紧接着一个数字时(即:紧接在一个匹配的模式后面的数字),不能使用熟悉的 //1 符号来表示逆向引用。举例说 //11,将会使 preg_replace() 搞不清楚是想要一个 //1 的逆向引用后面跟着一个数字 1 还是一个 //11 的逆向引用。本例中的解决方法是使用 /${1}1。这会形成一个隔离的 $1 逆向引用,而使另一个 1 只是单纯的文字。
PHP正则表达式替换的相关实例:
例子 1. 逆向引用后面紧接着数字的用法
<ol class="dp-c"><li class="alt"><span><span><?php </SPAN></span><li> <span class="vars">$string</span><span> = </span><span class="string">"April 15, 2003"</span><span>; </span> </li> <li class="alt"> <span class="vars">$pattern</span><span> = </span><span class="string">"/(/w+) (/d+), (/d+)/i"</span><span>; </span> </li> <li> <span class="vars">$replacement</span><span> = </span><span class="string">"/${1}1,/$3"</span><span>; </span> </li> <li class="alt"> <span>print preg_replace(</span><span class="vars">$pattern</span><span>, </span><span class="vars">$replacement</span><span>, </span><span class="vars">$string</span><span>); </span> </li> <li><span> </span></li> <li class="alt"> <span class="comment">/* Output </span> </li> <li><span><span class="comment"> ====== </span> </span></li> <li class="alt"><span><span class="comment">April1,2003 </span> </span></li> <li><span><span class="comment">*/</span><span> </span></span></li> <li class="alt"><span>?> </span></li></span></li></ol>
如果搜索到匹配项,则会返回被替换后的 subject,否则返回原来不变的 subject。
preg_replace() 的每个参数(除了 limit)都可以是一个数组。如果 pattern 和 replacement 都是数组,将以其键名在数组中出现的顺序来进行处理。这不一定和索引的数字顺序相同。如果使用索引来标识哪个 pattern 将被哪个 replacement 来替换,应该在调用 preg_replace() 之前用 ksort() 对数组进行排序。
例子 2. 在 preg_replace() 中使用索引数组
<ol class="dp-c"><li class="alt"><span><span><?php </SPAN></span><li> <span class="vars">$string</span><span> = </span> </li> <li class="alt"> <span class="string">"The quick brown fox jumped over the lazy dog."</span><span>; </span> </li> <li><span> </span></li> <li class="alt"> <span class="vars">$patterns</span><span>[0] = </span><span class="string">"/quick/"</span><span>; </span> </li> <li> <span class="vars">$patterns</span><span>[1] = </span><span class="string">"/brown/"</span><span>; </span> </li> <li class="alt"> <span class="vars">$patterns</span><span>[2] = </span><span class="string">"/fox/"</span><span>; </span> </li> <li><span> </span></li> <li class="alt"> <span class="vars">$replacements</span><span>[2] = </span><span class="string">"bear"</span><span>; </span> </li> <li> <span class="vars">$replacements</span><span>[1] = </span><span class="string">"black"</span><span>; </span> </li> <li class="alt"> <span class="vars">$replacements</span><span>[0] = </span><span class="string">"slow"</span><span>; </span> </li> <li><span> </span></li> <li class="alt"> <span>print preg_replace(</span><span class="vars">$patterns</span><span>, </span><span class="vars">$replacements</span><span>, </span><span class="vars">$string</span><span>); </span> </li> <li><span> </span></li> <li class="alt"> <span class="comment">/* Output </span> </li> <li><span><span class="comment"> ====== </span> </span></li> <li class="alt"><span> </span></li> <li><span><span class="comment">The bear black slow jumped over the lazy dog. </span> </span></li> <li class="alt"><span> </span></li> <li><span><span class="comment">*/</span><span> </span></span></li> <li class="alt"><span> </span></li> <li> <span class="comment">/* By ksorting patterns and replacements, </span> </li> <li class="alt"><span><span class="comment"> we should get what we wanted. */</span><span> </span></span></li> <li><span> </span></li> <li class="alt"> <span>ksort(</span><span class="vars">$patterns</span><span>); </span> </li> <li> <span>ksort(</span><span class="vars">$replacements</span><span>); </span> </li> <li class="alt"><span> </span></li> <li> <span>print preg_replace(</span><span class="vars">$patterns</span><span>, </span><span class="vars">$replacements</span><span>, </span><span class="vars">$string</span><span>); </span> </li> <li class="alt"><span> </span></li> <li> <span class="comment">/* Output </span> </li> <li class="alt"><span><span class="comment"> ====== </span> </span></li> <li><span><span class="comment">The slow black bear jumped over the lazy dog. </span> </span></li> <li class="alt"><span><span class="comment">*/</span><span> </span></span></li> <li><span>?> </span></li></span></li></ol>
如果 subject 是个数组,则会对 subject 中的每个项目执行搜索和替换,并返回一个数组。
如果 pattern 和 replacement 都是数组,则 preg_replace() 会依次从中分别取出值来对 subject 进行搜索和替换。如果 replacement 中的值比 pattern 中的少,则用空字符串作为余下的替换值。如果 pattern 是数组而 replacement 是字符串,则对 pattern 中的每个值都用此字符串作为替换值。反过来则没有意义了。
/e 修正符使 preg_replace() 将 replacement 参数当作 PHP 代码(在适当的逆向引用替换完之后)。提示:要确保 replacement 构成一个合法的 PHP 代码字符串,否则 PHP 会在报告在包含 preg_replace() 的行中出现语法解析错误。
例子 3. 替换数个值
<ol class="dp-c"><li class="alt"><span><span><?php </SPAN></span><li> <span class="vars">$patterns</span><span> = </span><span class="keyword">array</span><span> </span> </li> <li class="alt"> <span>(</span><span class="string">"/(19|20)(/d{2})-(/d{1,2})-(/d{1,2})/"</span><span>, </span> </li> <li> <span> </span><span class="string">"/^/s*{(/w+)}/s*=/"</span><span>); </span> </li> <li class="alt"> <span class="vars">$replace</span><span> = </span><span class="keyword">array</span><span> </span> </li> <li> <span>(</span><span class="string">"//3///4///1//2"</span><span>, </span><span class="string">"$//1 ="</span><span>); </span> </li> <li class="alt"><span>print preg_replace </span></li> <li> <span>(</span><span class="vars">$patterns</span><span>, </span><span class="vars">$replace</span><span>, </span><span class="string">"{startDate} = 1999-5-27"</span><span>); </span> </li> <li class="alt"><span>?> </span></li></span></li></ol>
本例将输出:
$startDate = 5/27/1999
例子 4. 使用 /e 修正符
<ol class="dp-c"><li class="alt"><span><span><?php </SPAN></span><li><span>preg_replace </span></li> <li class="alt"> <span>(</span><span class="string">"/(/?)(/w+)([^>]*>)/e"</span><span>, </span> </li> <li> <span class="string">"'//1'.strtoupper('//2').'//3'"</span><span>, </span> </li> <li class="alt"> <span class="vars">$html_body</span><span>); </span> </li> <li><span>?> </span></li></span></li></ol>
这将使输入字符串中的所有 HTML 标记变成大写,以上的实例运行支持版本为PHP 3>= 3.0.9, PHP 4。
PHP正则表达式替换的相关内容就向你介绍到这里,希望那个对你了解和掌握PHP正则表达式替换有所帮助。

PHPSESSIONの障害の理由には、構成エラー、Cookieの問題、セッションの有効期限が含まれます。 1。構成エラー:正しいセッションをチェックして設定します。save_path。 2.Cookieの問題:Cookieが正しく設定されていることを確認してください。 3.セッションの有効期限:セッションを調整してください。GC_MAXLIFETIME値はセッション時間を延長します。

PHPでセッションの問題をデバッグする方法は次のとおりです。1。セッションが正しく開始されるかどうかを確認します。 2.セッションIDの配信を確認します。 3.セッションデータのストレージと読み取りを確認します。 4.サーバーの構成を確認します。セッションIDとデータを出力し、セッションファイルのコンテンツを表示するなど、セッション関連の問題を効果的に診断して解決できます。

session_start()への複数の呼び出しにより、警告メッセージと可能なデータ上書きが行われます。 1)PHPは警告を発し、セッションが開始されたことを促します。 2)セッションデータの予期しない上書きを引き起こす可能性があります。 3)session_status()を使用してセッションステータスを確認して、繰り返しの呼び出しを避けます。

PHPでのセッションライフサイクルの構成は、session.gc_maxlifetimeとsession.cookie_lifetimeを設定することで達成できます。 1)session.gc_maxlifetimeサーバー側のセッションデータのサバイバル時間を制御します。 0に設定すると、ブラウザが閉じているとCookieが期限切れになります。

データベースストレージセッションを使用することの主な利点には、持続性、スケーラビリティ、セキュリティが含まれます。 1。永続性:サーバーが再起動しても、セッションデータは変更されないままになります。 2。スケーラビリティ:分散システムに適用され、セッションデータが複数のサーバー間で同期されるようにします。 3。セキュリティ:データベースは、機密情報を保護するための暗号化されたストレージを提供します。

PHPでのカスタムセッション処理の実装は、SessionHandlerInterfaceインターフェイスを実装することで実行できます。具体的な手順には、次のものが含まれます。1)CussentsessionHandlerなどのSessionHandlerInterfaceを実装するクラスの作成。 2)セッションデータのライフサイクルとストレージ方法を定義するためのインターフェイス(オープン、クローズ、読み取り、書き込み、破壊、GCなど)の書き換え方法。 3)PHPスクリプトでカスタムセッションプロセッサを登録し、セッションを開始します。これにより、データをMySQLやRedisなどのメディアに保存して、パフォーマンス、セキュリティ、スケーラビリティを改善できます。

SessionIDは、ユーザーセッションのステータスを追跡するためにWebアプリケーションで使用されるメカニズムです。 1.ユーザーとサーバー間の複数のインタラクション中にユーザーのID情報を維持するために使用されるランダムに生成された文字列です。 2。サーバーは、ユーザーの複数のリクエストでこれらの要求を識別および関連付けるのに役立つCookieまたはURLパラメーターを介してクライアントに生成および送信します。 3.生成は通常、ランダムアルゴリズムを使用して、一意性と予測不可能性を確保します。 4.実際の開発では、Redisなどのメモリ内データベースを使用してセッションデータを保存してパフォーマンスとセキュリティを改善できます。

APIなどのステートレス環境でのセッションの管理は、JWTまたはCookieを使用して達成できます。 1。JWTは、無国籍とスケーラビリティに適していますが、ビッグデータに関してはサイズが大きいです。 2.cookiesはより伝統的で実装が簡単ですが、セキュリティを確保するために慎重に構成する必要があります。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

ホットトピック









