在 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 <p><span style="font-style:italic">abcde</span><span style="font-weight:bold">abcde</span></p>
,我想剥离样式标签并将它们转换为html标签,使其成为<p><i>abcde</i><b>abcde</b></p>
。我怎样才能在 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);
匹配<
后跟一个或多个,而不是>
,直到空间出现并达到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不起作用,有哪位知道怎么回事吗?