php Regex -如何删除特定的html标签,保留其中的内容?

myss37ts  于 2023-08-02  发布在  PHP
关注(0)|答案(1)|浏览(82)

我有这样一段html代码,我需要删除span标签,这些标签总是用相同的属性调用,但我想保留内容。我怎样才能使正则表达式为它工作?我对Regex不是很了解。第一个月
到目前为止,我得到的正则表达式确实删除了span标记,但它也删除了内容,正则表达式有什么问题?有人能帮帮我吗谢谢。这是我试过的:
Regex -> <span\s+class="span-class">([\s\S]*?)</span>

eh57zj3b

eh57zj3b1#

解析HTML是很棘手的,但是对于您知道会受到限制的事情,只要可能的HTML标记名、属性和类名不失控,它就可以很好地工作。您的代码实际上对我来说似乎可以正常工作,除了我做了一个小的更改,以转义结束</span>标记上的斜杠
<span\s+class="span-class">([\s\S]*?)<\/span>
https://regexr.com/7hqgr或更低版本的JS中查看它的实际操作

const patt = /<span\s+class="span-class">([\s\S]*?)<\/span>/ig;
const str = `<span class="span-class"> My mother has blue eyes. </span>`;

console.log(patt.exec(str));

字符串
不确定您是否需要它,但是允许任何标记名称与匹配的结束标记的替代方法是在模式中使用反向引用
<([a-z0-9]+)\s+class="span-class">([\s\S]*?)<\/\1>
https://regexr.com/7hqgl

const patt = /<([a-z0-9]+)\s+class="span-class">([\s\S]*?)<\/\1>/ig;

console.log([...`<span class="span-class"> Example 1 </span>`.matchAll(patt)][0]);
console.log([...`<div class="span-class"> Example 2 </div>`.matchAll(patt)][0]);
console.log([...`<h4 class="span-class"> Example 3 </h4>`.matchAll(patt)][0]);

console.log([...`<h4 class="span-class"> No match - no matching tags! </h5>`.matchAll(patt)][0]);

相关问题