Привет, ребята. Я использую этот замечательный класс для небольшой фильтрации кода: http://simplehtmldom.sourceforge.net/. Он расширяет класс документов PHP DOM.
Практически все, что я делаю, это анализ строки через этот класс, который содержит код для встраивания, я беру уникальные биты информации, например, id, ширину, высоту, отправляемую через функцию-обработчик, которая вставляет id, ширину, высоту и т. Д. В мой предопределенный «безопасный» шаблон и заново вставьте мой безопасный шаблон вместо встроенного кода, который вставил пользователь. Может показаться отсталым, но это так и должно быть:)
Все это прекрасно работает. Проблема в том, что когда в строке содержится не просто код для встраивания, так как я не могу просто заменить код для встраивания, я могу заменить только всю строку, которая стирает остальную часть строки тегов и т. Д. Например, если бы был тег 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
}
}
Любой вклад будет с благодарностью. Если я достаточно хорошо объяснил свою проблему, пожалуйста, дайте мне знать:)