正規表現 - 非 PHP チュートリアル
正規表現を使用していますが、様々な機能や構造を使いこなすのはあくまで手段であり、実際の問題を解決することが本当の目的です。実際の問題を解決するには、問題を解決するためのアイデアが必要です。最終的には、正規表現の機能を 3 種類のロジックにまとめることができます。表現の便宜上、それぞれを AND、OR、NOT と呼びます。 。
最近、CIを使って個人給与管理システムを構築する際、ユーザーがログインして特定の機能を使用しているかどうかを確認する必要があり、正規表現-nonを使用しました。要件は次のとおりです:
パス /user、/user/login、/user/register をインターセプトする必要はありません。実際、/profile、/company、/work などのパスをインターセプトして、user_id がセッションに存在するかどうかを確認する必要があります。そうでない場合は、/user/login にジャンプします
最初の観察:
/user と一致するだけです。暫定的なコードは次のとおりです:
01
02
クラス Acl {
03
04
プライベート $CI;
05
06
パブリック関数 __construct() {
07
$this->CI = &get_instance();
08
}
09
10
パブリック関数 auth() {
11
If (!preg_match('/^user.*$/', uri_string())) {
12
$user_id = $this->CI->session->userdata('user_id');
13
if(empty($user_id)) {
14
リダイレクト('/ユーザー');
15
戻る;
16
}
17
}
18
}
19
}
テスト中に、user/change_password を検出できなかったことがわかりました。この機能では、最初に顧客がログインする必要があります。つまり、user/change_password は user.* で除外される必要があります。つまり、正規表現の「non」は除外される必要があります。前述のように使用されます。
「Not」は、正規表現で扱うのが最も難しい論理関係です。直接対応する構造がないため、「not」の処理はより困難になります。
最も単純な「非」は、特定の文字がここに表示されないことを意味します。これは通常、専用の文字グループ [^...] を使用することで解決できるようです。たとえば、二重引用符の文字列を照合する場合、最初と最後の二重引用符は一致しやすいため、内容は絶対に二重引用符ではない (エスケープは当面考慮されない) ため、[^"] で表すことができます。その長さは不確かなので、* で修飾され、式全体は "[^"]*" となり、非常に単純になります。
しかし、物事は本当にそんなに単純なのでしょうか? cat と Cut の例を見てみましょう。c で始まり t で終わる単語を一致させたいが、cut を一致させたくない場合は、c[^u]t と書くことができます。
この式は、最初の文字が c で、その後に u 以外の文字が続き、その後に t が続くことを意味します。はい、カットにマッチするのではなく、猫にマッチすることもあります。ただし、[^u] は「u ではない文字と一致する」という意味であるため、チャート、行為、法廷などと一致することはできません。
次に、[^u] を [^u]+ に変更します。これで問題は解決します。しかし、本当にそうなのでしょうか? [^u]+ は 1 つまたは複数 (無限大まで) の文字を意味しますが、各文字を u にすることはできません。したがって、c[^u]+t は cat と chart を一致させることはできますが、conduct と court を一致させることはできません。
実際、cut と私の間のパス一致の問題は、逐次ネガティブルック関数を使用することで解決できます。
(?!cut) はこのような判定を行うために使用され、cut によって後続の文字列が一致するかどうかを判定し、「現在位置」を移動しません。したがって、これを式の先頭に置き、(?!cut)c[a-z]+t を取得します。この式のロジックは次のとおりです。現在位置の右側の文字列がカットで一致しない場合にのみ、ここから開始して右側に c[a-z]+t を試みます。
さらに一歩進んで、cat と Cut を除外する必要がある場合は、負の順序の look around を (?!c[au]t) に変更できます。これにより、一致するものが確実に猫またはカットではないことが保証されます。 www.2cto.com
最初の質問に戻ります。コードに移動するだけです。コードは次のとおりです:
01
02
クラス Acl {
03
04
プライベート $CI;
05
06
パブリック関数 __construct() {
07
$this->CI = & get_instance();
08
}
09
10
パブリック関数 auth() {
11
If (!preg_match('/^(?!user/change_password)user.*$/', uri_string())) {
12
$user_id = $this->CI->session->userdata('user_id');
13
if(empty($user_id)) {
14
リダイレクト('/ユーザー');
15
戻る;
16
}
17
}
18
}
19
}
作者: kxt

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









スマートフォン技術が発展し続けるにつれて、携帯電話は私たちの日常生活においてますます重要な役割を果たしています。 Black Shark フォンは、ゲーム パフォーマンスに重点を置いたフラッグシップ フォンとして、プレイヤーから高い支持を得ています。ただし、場合によっては、Black Shark 携帯電話の電源が入らないという状況にも直面するため、この問題を解決するために何らかの措置を講じる必要があります。次に、Black Shark 携帯電話の電源が入らない問題を解決する方法を説明する 5 つのヒントを共有しましょう: ステップ 1: バッテリー残量を確認する まず、Black Shark 携帯電話に十分な電力があることを確認します。携帯電話のバッテリーが消耗している可能性があります

コンピューターがドライバーを読み込めない場合、デバイスが正しく動作しないか、コンピューターと正しく対話できない可能性があることは誰もが知っています。では、このデバイスにドライバーをロードできないことを示すプロンプト ボックスがコンピューターに表示された場合、問題を解決するにはどうすればよいでしょうか?以下のエディタでは、問題を簡単に解決する 2 つの方法を説明します。このデバイスにドライバーをロードできません 解決策 1. スタート メニューで「カーネル分離」を検索します。 2. メモリの整合性をオフにします。上記のメッセージには、「メモリの整合性がオフになっています。デバイスは脆弱である可能性があります。」というメッセージが表示されます。戻るボタンをクリックして無視してください。使用には影響しません。 3. マシンを再起動すると、問題が解決することがあります。

ソーシャルメディアの継続的な発展に伴い、Xiaohongshu はますます多くの若者が自分たちの生活を共有し、美しいものを発見するためのプラットフォームとなっています。多くのユーザーは、画像を投稿する際の自動保存の問題に悩まされています。では、この問題をどうやって解決すればよいでしょうか? 1.小紅書で公開するときに写真が自動的に保存される問題を解決するにはどうすればよいですか? 1. キャッシュをクリアする まず、Xiaohongshu のキャッシュ データをクリアしてみます。手順は次のとおりです: (1) 小紅書を開いて右下隅の「マイ」ボタンをクリックします。 (2) 個人センター ページで「設定」を見つけてクリックします。 (3) 下にスクロールして「」を見つけます。 「キャッシュをクリア」オプションを選択し、「OK」をクリックします。キャッシュをクリアした後、Xiaohongshu を再起動し、写真を投稿して、自動保存の問題が解決されるかどうかを確認します。 2. 小紅書バージョンを更新して、小紅書が正しく動作することを確認します。

CrystalDiskMark は、シーケンシャルおよびランダムの読み取り/書き込み速度を迅速に測定する、ハード ドライブ用の小型 HDD ベンチマーク ツールです。次に、編集者が CrystalDiskMark と Crystaldiskmark の使用方法を紹介します。 1. CrystalDiskMark の概要 CrystalDiskMark は、機械式ハード ドライブとソリッド ステート ドライブ (SSD) の読み取りおよび書き込み速度とパフォーマンスを評価するために広く使用されているディスク パフォーマンス テスト ツールです。 ). ランダム I/O パフォーマンス。これは無料の Windows アプリケーションで、使いやすいインターフェイスとハード ドライブのパフォーマンスのさまざまな側面を評価するためのさまざまなテスト モードを提供し、ハードウェアのレビューで広く使用されています。

foobar2000 は、音楽リソースをいつでも聴くことができるソフトウェアです。あらゆる種類の音楽をロスレス音質で提供します。音楽プレーヤーの強化版により、より包括的で快適な音楽体験を得ることができます。その設計コンセプトは、高度なオーディオをコンピュータ上で再生可能 デバイスを携帯電話に移植し、より便利で効率的な音楽再生体験を提供 シンプルでわかりやすく、使いやすいインターフェースデザイン 過度な装飾や煩雑な操作を排除したミニマルなデザインスタイルを採用また、さまざまなスキンとテーマをサポートし、自分の好みに合わせて設定をカスタマイズし、複数のオーディオ形式の再生をサポートする専用の音楽プレーヤーを作成します。過度の音量による聴覚障害を避けるために、自分の聴覚の状態に合わせて調整してください。次は私がお手伝いさせてください

NetEase Mailbox は、中国のネットユーザーに広く使用されている電子メール アドレスとして、その安定した効率的なサービスで常にユーザーの信頼を獲得してきました。 NetEase Mailbox Master は、携帯電話ユーザー向けに特別に作成された電子メール ソフトウェアで、電子メールの送受信プロセスが大幅に簡素化され、電子メールの処理がより便利になります。 NetEase Mailbox Master の使い方と具体的な機能について、以下ではこのサイトの編集者が詳しく紹介しますので、お役に立てれば幸いです。まず、モバイル アプリ ストアで NetEase Mailbox Master アプリを検索してダウンロードします。 App Store または Baidu Mobile Assistant で「NetEase Mailbox Master」を検索し、画面の指示に従ってインストールします。ダウンロードとインストールが完了したら、NetEase の電子メール アカウントを開いてログインします。ログイン インターフェイスは次のとおりです。

クラウド ストレージは今日、私たちの日常生活や仕事に欠かせない部分になっています。中国有数のクラウド ストレージ サービスの 1 つである Baidu Netdisk は、強力なストレージ機能、効率的な伝送速度、便利な操作体験により多くのユーザーの支持を得ています。また、重要なファイルのバックアップ、情報の共有、オンラインでのビデオの視聴、または音楽の聴きたい場合でも、Baidu Cloud Disk はニーズを満たすことができます。しかし、Baidu Netdisk アプリの具体的な使用方法を理解していないユーザーも多いため、このチュートリアルでは Baidu Netdisk アプリの使用方法を詳しく紹介します。まだ混乱しているユーザーは、この記事に従って詳細を学ぶことができます。 Baidu Cloud Network Disk の使用方法: 1. インストール まず、Baidu Cloud ソフトウェアをダウンロードしてインストールするときに、カスタム インストール オプションを選択してください。

MetaMask (中国語ではリトル フォックス ウォレットとも呼ばれます) は、無料で評判の高い暗号化ウォレット ソフトウェアです。現在、BTCC は MetaMask ウォレットへのバインドをサポートしており、バインド後は MetaMask ウォレットを使用してすぐにログイン、値の保存、コインの購入などが可能になり、初回バインドで 20 USDT のトライアル ボーナスも獲得できます。 BTCCMetaMask ウォレットのチュートリアルでは、MetaMask の登録方法と使用方法、および BTCC で Little Fox ウォレットをバインドして使用する方法を詳しく紹介します。メタマスクウォレットとは何ですか? 3,000 万人を超えるユーザーを抱える MetaMask Little Fox ウォレットは、現在最も人気のある暗号通貨ウォレットの 1 つです。無料で使用でき、拡張機能としてネットワーク上にインストールできます。
