正規表現について助けが必要です。概念は単純ですが、実際の解決策は、私が理解する方法をはるかに超えています。誰かが私が望む効果を達成する方法を説明できれば(そしてサンプルコードで説明を提供してください)、それは大歓迎です!
基本的に、次の文字列を格納するデータベース テーブルを想像してください。
'My name is $1. I wonder who $2 is.'
まず、ドル記号と数値の形式が固定されていることに注意してください。これはこの例だけではありません。これらのワイルドカードが実際に格納される方法です。上記の文字列を返すことができるようにするには、次のような入力が必要です。
'My name is John. I wonder who Sarah is.'
この形式のワイルドカードを使用して検索し、該当する行を返すクエリを作成するにはどうすればよいですか? 正規表現が最善の方法だと思います。理論的には、任意の数のワイルドカードを使用できることに注意してください。
現在、これはデータベースからコンテンツをドラッグする既存のクエリの一部です。連結などがあるのは、1 つのデータベース セルに複数の文字列が縦線で連結されているためです。
AND CONCAT('|', content, '|')
LIKE CONCAT('%|', '" . mysql_real_escape_string($in) . "', '|%')
^この行を変更して、現在の効果 (垂直バーなど) を維持しながら、クエリの一部である変数を操作する必要があります。正規表現がバーも考慮に入れる場合、CONCAT() 関数を削除できます。
データベースに表示される可能性のある連結を含む文字列の例を次に示します。
Hello, my name is $1.|Hello, I'm $1.|$1 is my name!
クエリは、文字列内のこれらのチャンクのいずれかと一致し、一致する場合はその行を返すことができる必要があります。変数$1
はワイルドカードとして扱う必要があります。縦棒は常にチャンクを区切ります。