大家好我在这里使用这个精彩的类来做一些代码嵌入过滤:http://simplehtmldom.sourceforge.net/。它扩展了PHP DOM文档类。
我正在做的就是通过这个包含嵌入代码的类解析一个字符串,我抓住了一些独特的信息,例如id,width,height通过一个处理函数发送到我的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
}
}
任何意见都将不胜感激。如果我已经很好地解释了我的问题,请告诉我:)
答案 0 :(得分:4)
执行此操作时:
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>";
你完全取代了嵌入。