在 PHP 中将 <span style="font-weight:bold">some text<span> 转换为 <b>some text

Posted

技术标签:

【中文标题】在 PHP 中将 <span style="font-weight:bold">some text<span> 转换为 <b>some text</b> [重复]【英文标题】:Transforming <span style="font-weight:bold">some text<span> into <b>some text</b> in PHP [duplicate] 【发布时间】:2020-05-27 15:51:54 【问题描述】:

作为标题,如果我有一些html &lt;p&gt;&lt;span style="font-style:italic"&gt;abcde&lt;/span&gt;&lt;span style="font-weight:bold"&gt;abcde&lt;/span&gt;&lt;/p&gt;,我想剥离样式标签并将它们转换为html标签,使其成为&lt;p&gt;&lt;i&gt;abcde&lt;/i&gt;&lt;b&gt;abcde&lt;/b&gt;&lt;/p&gt;。我怎样才能在 php 中做到这一点?

我注意到,当我在 CKEditor 中打开 html 时,这种转换是自动完成的。但我想在后端 PHP 中做到这一点。谢谢。

【问题讨论】:

你试试phpliveregex.com 【参考方案1】:
$string = '<p><span style="font-style-italic;font-weight:bold">abcde</span><span style="font-weight:bold">abcde</span></p>';

$dom = new DOMDocument();
$dom->loadHTML($string);

$xp = new DOMXPath($dom);

$str = '';
$results = $xp->query('//span');
if($results->length>0)
    foreach($results as $result)
        $style = $result->getAttribute("style");
        $style_arr = explode(";",$style);
        $style_template = '%s';
        if(count($style_arr)>0)
            foreach($style_arr as $style_item)
                if($style_item == 'font-style-italic')
                    $style_template = '<i>'.$style_template.'</i>';
                
                if($style_item == 'font-weight:bold')
                    $style_template = '<b>'.$style_template.'</b>';
                
            
        
        $str .= sprintf($style_template,$result->nodeValue);
    

$str = '<p>'.$str.'</p>';

【讨论】:

欢迎来到 SO。请解释您的答案以提高其质量(请参阅***.com/help/answering 了解更多信息)。【参考方案2】:
$output = preg_replace('/(<[^>]+) style=".*?"/i', '$1', $input);

匹配&lt; 后跟一个或多个,而不是&gt;,直到空间出现并达到style="anything"。如果标签不包含style=""/i 将与大写样式一起使用,$1 将保留标签原样。对于单引号style='',请使用:

(<[^>]+) style=("|').*?("|')

【讨论】:

不确定像 fb/sk.developers for more info 之类的东西是否应该是答案的一部分 - 如果他们需要更多帮助,那么应该在这里完成(有些可能考虑这个垃圾邮件)。【参考方案3】:

你也可以像这样在php参数下使用html标签或者php开闭标签

<?php
    echo"<h1>Here is Heading h1 </h1>"; 
 ?>

或者你可以把你的 html 代码放在 echo 之后的 " " 像这样

<?php echo"Your Html Code Here"; ?>

【讨论】:

您能解释一下这是如何解决问题的吗? 这似乎与所提出的问题无关。

以上是关于在 PHP 中将 <span style="font-weight:bold">some text<span> 转换为 <b>some text的主要内容,如果未能解决你的问题,请参考以下文章

我用jquery的append拼接了<span style="width:1000"></span>,结果width不起作用,有哪位知道怎么回事吗?

<span style=...> 消毒是不是安全?

php关键字描红的一个小问题

如何在 div 内垂直居中 <span>? [复制]

急急急,请问css的span换行问题?

关于表格TD中的div 里面图片和<span>中文字如何在一行显示