2010-06-28 207 views
4

我有這個字符串:PHP字符串操作:追加HTML類將字符串

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

我怎麼追加「MyClass的」旁邊的「defaultClass」?

+1

是省略號(...)其實這三個時期或者可能它是任何系列的角色?字符串中的其他內容可能與您的示例有所不同?真的,對你的問題的簡單回答只是在defaultClass旁邊鍵入'myClass',但我假設你需要在多個不同的(不可預知的)字符串上執行此操作。 :P – 2010-06-28 11:02:24

回答

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

我想冒險猜測他在問如何以編程方式做到這一點:-) – 2010-06-28 11:02:03

+0

謝謝,我用str_replace來做到這一點:P – Alex 2010-06-28 11:14:50

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

這是假設myClass的是可變

1

我想看看調用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/

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();