我需要替换标签中的所有文本(这不是代码)。 所以我正在使用:
preg_replace('/<.*?>([^<]*)<\/.*?>/', "new_text", $str)
我得到result。但我需要删除所有空的和只有空白的匹配或从搜索中删除它们。 我该怎么办?
答案 0 :(得分:1)
我会建议这样的事情:
<.*?>((?=[^<]*\S.*?<)([^<]+))<\/.*?>
或者,如果您想在匹配中添加换行符:
(<.*?>)(?=[^<]*\S.*[<\n])([^<]+)(<\/.*?>)
它与您的awnser类似,用[^<]+
替换匹配的组以确保至少返回一个字符
但是,为了确保只有空格才能匹配,在开始标记匹配后会添加一个前瞻:
(?=[^<]*\S.*?<)
这确保了两个标签之间至少有一个字符不是空白。
答案 1 :(得分:0)