preg_match_allを使用して文字列内の指定されたキーワードを検索していますが、見つかった場合はそのキーワードの前後にいくつかの単語を選びます。私はここでのキーワードは、キーワード、$ prevをし、$は次の多くの単語を選択する必要がどのように表現する番号は、$テキストがメインの文字列と$出力は、得られる配列されている$ preg_match_allPHP preg_match_allが目的の出力を返さない
preg_match_all('~\b(?:[^ ]+){0,'.$prev.'}'.trim($keyword).'(?: [^ ]+){0,'.$next.'}\b~i',$text,$output);
の下に使用しています。私の文字列はここで
PROFIT & LOSS NOFORMING P 152 22. ADDITIONAL INFORMATION: A) AUDITORS REMUNERATION (EXCLUDING SERVICE TAX) (` in crores) ParticularsCurrent yearPrevious year As audit fees (including limited review) 3.45 2.42
キーワードを下回っているのであれば、私はこの
EXCLUDING SERVICE TAX) (` in crores) ParticularsCurrent yearPrevious year As audit fees (including limited review) 3.45 2.42
しかし、私のキーワードと次の単語がありません持っている場合は、以下の文字列、のように、所望の出力を取得するには、「監査費用」でありますその間の空白は、その文字列の前に少数の単語を返しますが、そのキーワードの次の単語は返しません。
PROFIT & LOSS NOFORMING P 152 22. ADDITIONAL INFORMATION: A) AUDITORS REMUNERATION (EXCLUDING SERVICE TAX) (` in crores) ParticularsCurrent yearPrevious year As audit fees(including limited review) 3.45 2.42
は、それはちょうど親切にも私のキーワードの場合、次の単語を取得する方法を、ここに私を導い
EXCLUDING SERVICE TAX) (` in crores) ParticularsCurrent yearPrevious year As audit fees
を返し、それが次の単語がそれらの間にスペースがないのです。オプションでなければなりません
https://www.regex101.com/r/wY6sP3/1 – splash58
ねえ@ splash58、偉大な仕事の人は、それが魅力のように働きました、 ありがとうございました。あなたの答えを掲示してください、私はそれを正しいものとして選択します。 –
@ChangezKhan:キーワードの前後に単語間にスペースがない場合はどうなりますか? –