phpのpreg_match_allで使用するこの正常に機能する正規表現を使用して、文/文字列内の特定の単語の前に0〜x行、後に0〜y行を含む文字列を照合します。
'(?:[^\.?!<]*[\.?!]+){0,x}(?:[^\.?!]*)'.$word.'(?:[^\.?!]*)(?:[\.?!]+[^\.?!]*){0,y}'.'(?:[\.?!]+)'
ここで、特定のタグが発生したときに文字列を切り落とすようにします。だから私は上のこの文字列にこの部分を実装することを考えていました:
(?:(<\/?(?!'.$allowed_tags.')))
ここで、$ allowed_tagsは次のようなphp変数です。たとえば、次のようになります。'(frame|head|span|script)'
これを先読み、後読み、その他の条件で機能させようとしているにもかかわらず、適切に機能させることができず、残念ながら、これは私のプログラミングスキルをはるかに超えていることを認めなければなりません。
うまくいけば、誰かがこれで私を助けることができますか?私はあなたの天才の中の誰かができると確信しています:)
よろしくお願いします!
入出力の例:
たとえば、私はこの部分をつかみたいと思います:
<p>Tradition, Expansion, Exile.<br/>Individual paths in Chinese contemporary art </p><p>The contemporary <i>art world</i> craves for novelty: the best reason for Chinese art to be so trendy is also the <strong>worst one</strong>.</p>
この完全な文字列から:
<div readability="120"><p>Tradition, Expansion, Exile.<br/>Individual paths in Chinese contemporary art </p><p>The contemporary <i>art world</i> craves for novelty: the best reason for Chinese art to be so trendy is also the <strong>worst one</strong>.</p><div>
つまり、この例<p></p><i></i><strong></strong> <br/>
ではタグが許可されており<div >
、許可され</div>
ていません。