2010-06-28 3 views
4

У меня есть эта строка:PHP строки: Добавление HTML класса в строку

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

как я добавляемая рядом с «defaultClass» «MyClass»?

+1

ли многоточие (...) на самом деле эти три периода или может это какая-то серия персонажей? Что еще в строке может отличаться от вашего примера? На самом деле простой ответ на ваш вопрос - это просто ввести «myClass» рядом с классом defaultClass, но я предполагаю, что вам нужно будет выполнить эту операцию на нескольких разных (и непредсказуемых) строках. : P –

ответ

5

Атрибут «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, который вероятно, меньше подверженных ошибкам, но более сложных и ресурсных.

+2

Я бы рискнул предположить, что он спрашивает, как это сделать программно :-) –

+0

спасибо, я использовал str_replace для этого: P – Alex

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

Это предполагает MyClass переменная

1

Я хотел бы взглянуть на систему Called SimpleDom!

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

// 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/

7

С родной 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(); 
Смежные вопросы