前提・実現したいこと
以下の3つを満たし、検索後にTRUE、 FOLSEを返したい
######(1)「大文字小文字の区別をしない」
例)テキストには「 difficult」があり、ユーザーが「DiffiCulT」と入力しても検索できるようにしたい。
######(2)「英単語ごとに完全に一致する単語を検索したい」
例)テキストには「 Big dog」があり、文字の大小区別せずユーザーが「big」か「dog」を入力すると検索できるようにしたい
今のままでは、b,i,g,d,o,gのいずれかを入力すると検索が出来てしまいます。
######(3)「ユーザーの複数入力した文字の先頭だけで検索したい」
例)テキストには「 I want to have a dog」があり、ユーザーが「want to」を入力しても「want」で検索したい
の3つをユーザー入力による検索で行いたいです。
######現在はユーザーが入力した文字が入った$inputを以下のように記載しているので、(1)が出来ています!
if (preg_match_all("/$input/i", $text))
現在の状況は、英単語ごとの「完全一致」が出来ていない為、テキスト内に含まれる「a」「b」「c」などの一字でもユーザー入力すると、TRUEになります。また不一致の場合はFALSEになることが確認できています。
*出来るだけテキスト内には正規表現行わない方法でご教授お願いしたいです。
該当のソースコードから、実装方法や参考情報などをご教授頂きたく存じます。
該当のソースコード
<?php $text = 'I am learning programming. It can be difficult, but it is fun to be able to implement it .'; // echo $text; // ユーザーによる入力 標準入力 $input= trim(fgets(STDIN)); // 部分一致 if (preg_match_all("/$input/i", $text)) { echo "Searching for".$input."in text"."\n"; echo "RESULT:TRUE"."\n"; } else { echo "Searching for".$input."in text"."\n"; echo "RESULT: FALSE"."\n"; } ?>
試したこと
先頭検索を行う際に
if (preg_match_all("/$input/i", $text))
の"/$input/i"
を"/^$input/i"
としましたがうまく処理が出来ませんでした。
preg_match
の使い方としてpreg_match(正規表現, 対象テキスト)
ですが、preg_match(正規表現(変数), 対象テキスト)
のように
ユーザーが入力した値が格納された変数$input
に、正規表現を行うことはできるのでしょうか。
実装例や参考情報を探しても中々実装出来ません。
ご拝読頂き誠にありがとうございます
お手隙の際に「実現したいこと」に記載されている内容をご教授いただけないでしょうか。
コメント・ご教授頂きました際には、迅速にご返信いたします。
ご協力のほど、宜しくお願い致します。
回答2件
あなたの回答
tips
プレビュー