0

これをどのように取るか:

<img class="classone twoclass alignLEFT" src="xxxx" />

クラス配列で「align」という単語を検索し、「align」という単語の残りの部分(この場合は「left」)を取得して、実際のalignプロパティに割り当てますか?

<img class="classone twoclass alignLEFT" align="LEFT" src="xxxx" />

私は私が必要であることを知っています

$needle = "align";
$haystack = "<img class="classone twoclass alignLEFT" src="xxxx" />"

そして私が探しているのは

$pincushion = {{the rest of the word from $needle}}

preg_matchだから基本的に私はのためにやってい$needleます。見つかった場合、その単語の残りの部分(つまり、)を取得するにはどうすればよい$pincushionですか?

試しpreg_splitましたが、区切り文字として「align」を使用できませんでした。(理にかなっている)

これはjquery/javascriptにすることはできません-レンダリングされたhtmlコードで行う必要があります。

何かご意見は?私は今、本当の運がない答えを探すのに10時間を費やしました。私はDomDocumentに出くわしましたが、必要なものを見つけることができませんでした。

4

2 に答える 2

0
preg_match_all('#align(.*?)(" )#si', '<img class="classone twoclass alignLEFT" src="xxxx" />', $arr, PREG_PATTERN_ORDER);

結果:

Array
(
[0] => Array
    (
        [0] => alignLEFT" 
    )

[1] => Array
    (
        [0] => LEFT
    )

[2] => Array
    (
        [0] => " 
    )

)

説明: またはで区切られた#align(.*?)(" )#siアルギンを検索します。n-chars"

于 2013-03-08T16:52:42.367 に答える
0

HTMLを使用しているので、DOMDocumentを機能させることができます。少し引き出されていますが、複雑な正規表現よりも読みやすく、変更しやすいでしょう。

domdocumentよりもHTMLフラグメントの処理に優れたライブラリがありますが、組み込み関数を使用する場合は、domdocumentが最適です。

<?php

$html = '<img class="" src="xxxx" />adasdasdasd<img class="classone twoclass alignLEFT" src="xxxx" />';

$domdoc = new DOMDocument('');
$domdoc->loadHTML($html);

$xpath = new DOMXpath($domdoc);

$imgs = $xpath->query('//img');


foreach ($imgs as $element) {

    $class = $element->getAttribute('class');

    if (strpos($class, 'alignLEFT') !== false) {

        $element->setAttribute('align', 'left');
    }

}

// DOM Document works with full html documents, so now we have to isolate our fragment

$bodyelement = $xpath->query('/html/body');
$bodyhtml = $domdoc->saveXML($bodyelement->item(0));

echo str_replace(array('<body>', '</body>'), '', $bodyhtml);
于 2013-03-08T18:01:14.333 に答える