Обработка строк PHP: Добавьте класс HTML к строке

У меня есть эта строка:

$str = '<div class="defaultClass">...</div>';

как я добавляю 'myClass' рядом с 'defaultClass'?

6
задан Alex 28 June 2010 в 10:57
поделиться

4 ответа

Атрибут "class" - это просто список классов, разделенных пробелами.

$str = '<div class="defaultClass myClass">...</div>';

Или вы можете взломать его вот так:

$str = '<div class="defaultClass">...</div>';
$str = str_replace('class="defaultClass', 'class="myClass defaultClass', $str);
//Result: <div class="myClass defaultClass">...</div>

Или с помощью регулярных выражений:

$str = '<div class="defaultClass">...</div>';
$str = preg_replace(':class="(.*defaultClass.*)":', 'class="\1 myClass"', $str);
//Result: <div class="defaultClass myClass">...</div>

Другие решения включают использование XML для добавления его в узел DOM, что, вероятно, менее подвержено ошибкам, но более продвинуто и требует больших ресурсов.

7
ответ дан 8 December 2019 в 15:58
поделиться
$str = '<div class="defaultClass ' . $myclass . '">...</div>';

Это предполагает, что myClass является переменной

-1
ответ дан 8 December 2019 в 15:58
поделиться

Я бы взглянул на систему под названием SimpleDom!

Вот небольшой пример!

// Create DOM from string
$html = str_get_html('<div class="defaultClass"><strong>Robert Pitt</strong></div>');

$html->find('div', 1)->class = 'SomeClass';

$html->find('div[id=hello]', 0)->innertext = 'foo';

echo $html; // Output: <div id="hello">foo</div><div id="world" class="bar">World</div>

Еще несколько примеров: http://simplehtmldom.sourceforge.net/manual.htm

Некоторые загрузки ;): http://simplehtmldom.sourceforge.net/

1
ответ дан 8 December 2019 в 15:58
поделиться

С родным DOM :

$dom = new DOMDocument;
$dom->loadHTML('<div class="defaultClass">...</div>');
$divs = $dom->getElementsByTagName('div');
foreach($divs as $div) {
    $div->setAttribute('class', 
        $div->getAttribute('class') . ' some-other-class');
}

echo $dom->saveHTML();
8
ответ дан 8 December 2019 в 15:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: