2010-06-28 4 views
4

J'ai cette chaîne:manipulation de chaînes PHP: Append classe html à une chaîne

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

comment puis-je APPEND 'myClass' à côté 'defaultClass'?

+1

est le bouton de sélection (...) en fait ces trois périodes ou pourraient ce soit une série de caractères? Quoi d'autre dans la chaîne peut être différent de votre exemple? Vraiment, la réponse simple à votre question est juste de taper 'myClass' à côté de defaultClass, mais je suppose que vous devrez effectuer cette opération sur plusieurs chaînes différentes (et imprévisibles). : P –

Répondre

5

L'attribut "class" est juste une liste de classes séparées par des espaces.

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

Ou vous pouvez pirater ensemble comme ceci:

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

Ou avec des expressions régulières:

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

D'autres solutions comprennent l'utilisation de XML pour l'ajouter au nœud DOM, qui est probablement moins sujet aux erreurs mais plus avancé et plus lourd en ressources.

+2

Je devinerais qu'il demande comment le faire par programme :-) –

+0

merci, j'ai utilisé str_replace pour ce faire: P – Alex

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

Cela suppose myClass est variable

1

Je prendrais un coup d'œil à un système appelé SimpleDom!

Voici un petit exemple!

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

Quelques exemples: http://simplehtmldom.sourceforge.net/manual.htm

Quelques Téléchargements;): http://simplehtmldom.sourceforge.net/

7

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