我需要一个php的正则表达式,它输出<!--:en-->
和<!--:-->
之间的所有内容。
因此,对于<!--:en-->STRING<!--:-->
,它只输出STRING
。
编辑:哦,以下<!--:-->
nedds是<!--:en-->
之后的第一个因为文本中有更多内容...
答案 0 :(得分:4)
你想要的那个实际上并不太复杂:
/<!--:en-->(.*?)<!--:-->/gi
您的比赛将在捕获组1中。
说明:
.*?
是一个懒惰的量词。基本上,它意味着“保持匹配,直到找到仍然适合这种模式的最短字符串。”这将导致匹配在<!--:-->
的第一个实例处停止,而不是在文档中的最后一个<!--:-->
之前将所有内容都吸收。
如果我正确地回忆起我的PHP,那么用法就像preg_match("/<!--:en-->(.*?)<!--:-->/gi", $input)
。
答案 1 :(得分:-1)
如果您只有那个输入
$input = '<!--:en-->STRING<!--:-->';
您可以尝试使用
$output = strip_tags($input);
答案 2 :(得分:-3)
尝试:
^< !--:en-- >(.*)< !--:-- >$
我不认为任何其他角色需要转义。
答案 3 :(得分:-3)
<!--:en--\b[^>]*>(.*?)<!--:-->
这将匹配您的代码之间的内容。如果你嵌套你的标签会破坏,但你没有说你这样做:)