我需要一个php正则表达式,用一个标签替换另一个标签

1 html php regex html-manipulation

这是我需要做的:

我需要匹配以下标记:

<SPAN style="TEXT-DECORATION: underline">text sample</SPAN>
Run Code Online (Sandbox Code Playgroud)

我需要用符合html3标签替换span,但保留文本.更换后,最终标签应如下所示:

<u>text sample</u>
Run Code Online (Sandbox Code Playgroud)

我对正则表达式不太满意,似乎无法得出答案.

先感谢您.

Pet*_*ton 5

正则表达式不是为标记操作而设计的.

如果你有任何形式的嵌套,它会变得混乱.

但是,考虑到提供的非常简单的示例,您可以这样做:

$MyString = preg_replace
    ( '/(?si)<SPAN\s+style\s*=\s*"TEXT-DECORATION:\s*underline;?"\s*>(.*?)<\/SPAN>/'
    , '<u>$1</u>'
    , $MyString
    );
Run Code Online (Sandbox Code Playgroud)


但是这在很多方面存在缺陷,而且使用专为操作标签而设计的工具要好得多.

看看DOMDocument-> loadHTML()相关函数.


Sch*_*kie 5

不要将常规表达式用于PARSE HTML

不要使用正则表达式来解析HTML

不要使用正则表达式来解析HTML

不要使用正则表达式来解析HTML

不要使用正则表达式来解析HTML

不要使用正则表达式来解析HTML

你需要更多澄清吗?

使用DomDocument :: LoadFromHTML;)