2017-07-25 8 views
0

私は自分のフィルタをwordpressのオーディオショートコードにしようとしています。 要素を見つけてもう1つを追加したいと思います。私は文字列とhtmlコードを持っていますし、str_replaceは機能しません。クラスで要素を見つけ、PHPの文字列でもう1つを追加してください

<div id="mep_0" class="mejs-container svg mejs-audio" tabindex="0" role="application" aria-label="Audio Player" style="width: 416px; height: 30px;"> 

私は 'テストクラスは' 'mejs-コンテナ' でDIVに追加したいと思います。そのid( 'mep_0')が修正されていないことを追加します。

+0

? – GrumpyCrouton

+0

はい、それは私が欲しいものです –

+0

なぜstr_replaceは動作しませんか? – CumminUp07

答えて

3

この目的でXpathを使用できます。

これは単純な例です:あなたはEVERY `mejs-container`要素に`テスト-class`を追加したい

$dom = '<div id="mep_0" class="mejs-container svg mejs-audio" tabindex="1" role="application" aria-label="Audio Player" style="width: 416px; height: 30px;"> 
<div id="mep_1" class="mejs-container svg mejs-audio" tabindex="0" role="application" aria-label="Audio Player" style="width: 416px; height: 30px;"> 
<div id="mep_2" class="mejs-container svg mejs-audio" tabindex="0" role="application" aria-label="Audio Player" style="width: 416px; height: 30px;">'; 

$xpath = new DomXPath($dom); // read xml/html into dom to manipulate or search stuff 
$elements = $xpath->query('//div[contains(@class,"mejs-container")]'); // search elements that contain "mejs-container" class 

// loop through each found element 
foreach($elements as $element) { 

    // get the current class attributes content 
    // which would give you "mejs-container svg mejs-audio" 
    $currentClass = $element->getAttribute('class'); 

    // append "test-class" to the current value and set it in the dom (mind the space between classes) 
    $element->setAttribute($currentClass . " test-class"); 
} 
+0

私はまだこれを行う方法がわかりません:( –

+0

何が起こったのか、どのように$ domが設定されているかを説明するために各行にコメントを追加しました。上記の最初の行の代わりに '$ file =" test.html "; $ dom =新しいDOMDocument(); $ dom-> loadHTMLFile($ file);'を使用しているファイルです。あなたはタグを操作するためにjavascriptを使うこともできます。 – Yolo

+0

ありがとうございました:) –

関連する問題