PHP简单的DOM解析器
问题描述:
嗨,大家好我正在使用这个美妙的类在这里做一些代码嵌入过滤:http://simplehtmldom.sourceforge.net/。它扩展了PHP DOM文档类。PHP简单的DOM解析器
我所做的大部分工作是通过这个包含嵌入代码的类来解析字符串,我通过一个处理函数来获取信息的独特位,例如id,width,height等。我预定义的“安全”模板,并将我的安全模板重新插入用户放入的嵌入代码的位置。可能看起来是一种倒退的方式,但它是它必须完成的方式:)
所有这一切工作正常。问题是,当字符串中包含的不仅仅是嵌入代码时,因为我不能只替换嵌入代码,我只能替换整个字符串来擦除其余的标签等字符串。例如,如果有一个p标签将被擦除。
所以我的问题是如何使用这个类,我可以只取代字符串的某些部分?花了最近几天试图解决这个问题,需要更多的输入。看起来这个班可以做到这一点,所以我很难过。
这里是什么,我至今基本版本:)
// load the class
$html = new simple_html_dom();
// load the entire string containing everything user entered here
$return = $html->load($string);
// check for embed tags
if($html->find('embed') == true
{
foreach($html->find('embed') as $element)
{
// send it off to the function which returns a new safe embed code
$element = create_new_embed($parameters);
// this is where i somehow i need to save the changes and send it back to $return
}
}
任何投入将感激地赞赏。如果我已经解释了我的问题不够好,请让我知道:)
答
当你这样做:
foreach($html->find('embed') as $element)
你正在创建一个simpleHTMLdom元素对象 - 它不是一个简单的变量,你可以只使用作为分配。对于〔实施例,如果该元素是:
<embed>Some Embed Code Here</embed>
你可以这样做改变了下列文件:
$element->innertext = "Hello world";
# the element is now <embed>Hello world</embed>
如果你想完全改变元素的
:
$element->outertext = "<p>Now I'm a paragraph</p>";
和你已经完全取代了嵌入。
当然,geez很明显。非常感谢你。 – 2010-05-16 05:17:01
谢谢您以前的快速回复! – 2010-05-16 05:37:52
没问题。如果这回答你的问题,请考虑点击好的复选标记,这意味着......它最好的回答你的问题:-)欢迎来到Stackoverflow。 – Erik 2010-05-16 05:45:52