我得到了这个工作正常的正则表达式,可与 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>
。