Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/91.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用php修剪html标记和格式?_Php_Html_Tags - Fatal编程技术网

如何使用php修剪html标记和格式?

如何使用php修剪html标记和格式?,php,html,tags,Php,Html,Tags,比如说 $string = '<i>Line1</i><i><i><i><i><i></i></i></i></i></i><i><i><i><i> <i>Line 2</i></i></i></i></i>

比如说

$string = '<i>Line1</i><i><i><i><i><i></i></i></i></i></i><i><i><i><i>
              <i>Line 2</i></i></i></i></i><i><i><i><i><i></i></i></i></i>
              </i><i><i><i><i><i>Line 3</i></i></i></i></i>';
$string='第1行
第2行
第3行';
如果标签中的内容为空,如何移除标签;如果标签未关闭,如何关闭标签 使用php


请帮助解决此问题。

您可以为此使用
strip\u标签

$string ='<i>Line1</i><i><i><i><i><i></i></i></i></i></i><i><i><i><i>
          <i>Line 2</i></i></i></i></i><i><i><i><i><i></i></i></i></i>
          </i><i><i><i><i><i>Line 3</i></i></i></i></i>';
格式化未关闭的标记的一种方法是

$doc = new DOMDocument();
$doc->loadHTML($string);
$string = $doc->saveHTML();
我们还可以使用regex删除空的html标记。这里有一个小函数

function remove_empty_tags ($string, $rep = NULL)
{
   if (!is_string ($string)
      || trim ($string) == '')
          return $string;

   return preg_replace ('/<([^<\/>]*)>([\s]*?|(?R))<\/\1>/imsU',!is_string ($rep) ? '' : $rep,$string);
}

$string = remove_empty_tags($string);
函数删除空标记($string,$rep=NULL)
{
如果(!是字符串($string)
||修剪($string)='')
返回$string;
返回preg_replace('/([\s]*?|(?R))/imsU',!is_string($rep)?':$rep,$string);
}
$string=删除\u空\u标记($string);

这不会删除所有标签,而不仅仅是没有内容的标签。此外,这不会关闭未关闭的标签。是的,您的回答是正确的。要删除没有内容的标记,我们可以使用Regex。@Sean我已经更新了我的答案,我在其中编写了一个函数,使用Regex.Well@shamemahmed删除空的html标记。实际上是一个问题。例如测试。实际上我需要测试。请帮帮我,我建议你使用正则表达式,你可以用正则表达式来做,但要有一些线索和错误。否则你可以通过这篇文章,你知道所有这些标签里面都有内容,对吗?是的,你能帮忙吗。。。
function remove_empty_tags ($string, $rep = NULL)
{
   if (!is_string ($string)
      || trim ($string) == '')
          return $string;

   return preg_replace ('/<([^<\/>]*)>([\s]*?|(?R))<\/\1>/imsU',!is_string ($rep) ? '' : $rep,$string);
}

$string = remove_empty_tags($string);