渲染之前过滤来自HTML不需要的元素最佳方法

我有了,我需要渲染/回波屏幕HTML内容的变量$的例子。 但是,渲染到屏幕前,我想删除某些内容。 比如$示例变量的结构是:

<form> some stuff here... </form><p>hi there</p><div></div>

我想渲染之前,请从$例如变量中的表单元素。 我知道我可以在此使用正则表达式做,但什么是更好的方式来做到这一点在PHP? 此外,有没有在PHP喜欢用strip_tags功能,它可以准确地传递,它需要剥离的标签? 我的问题是不相关的剥离不安全的标签或清理HTML,它只是,我想输出之前删除的变量某些码元素。 作为generatlization,如何从具有特定类添加到他们的$例如变量仅删除这些div?

--------------解决方案-------------

不要使用PHP来munge的HTML,而是使用打印样式表来改变布局。

http://www.webcredible.co.uk/user-friendly-resources/css/print-stylesheet.shtml

你澄清后编辑:
我仍然认为样式表的方式去隐藏内容。 如果你不剥离标签为安全起见,我真的不知道你试图通过剥离内容服务器端实现什么。

你可以通过strip_tags的第二个参数允许的标记名称的列表$allowable_tags

// strip any tag except P and DIV
$clean = strip_tags($str, '<p><div>');

如果你想做一个更可调的筛选,IA€™D使用像一个DOM文档HTML解析器,遍历DOM树,并删除我唐娜€节点™吨想要的。

在使用打印的CSS显示CSS属性:

你的HTML应答器到你的print.css文件:

<link rel="stylesheet" type="text/css" media="print" href="print.css" />

您的形式描述:

<form class="pouet">
...
</form>

您print.css文件

.pouet {
display:none;
}

如果您使用的是XHTML,您可以使用XML工具(如DOM扩展或SimpleXML的),为您的使用。

preg_replace($regex, "", $example);

我不是很擅长的正则表达式,但$正则表达式将包含表单打开标签后跟一个通配符进而形成紧密的标签,从而消除内所载的一切

编辑:$正则表达式/<form.*\/form>/s

您可以使用$内容=用strip_tags($内容,“

'); 或刚找到的第一个和第一的位置,并删除在它里面的东西。 使用strpos($内容,“

你可以使用爆炸()的分裂刺痛<form></form>标签,只是包含你想要的块:

$arr1 = explode("<form>",$example);
$example = $arr1[0];
for ($i=1;$i<count($arr1);$i++)
{
$arr2 = explode("</form>",$arr1[$i]);
$example .= $arr2[1];
}

分类:php 时间:2015-03-15 人气:0
本文关键词: PHP,HTML
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 2.022 (s). 10 q(s)