php获取css类并将其分配给rel属性

时间:2013-03-08 16:31:40

标签: php regex search preg-match-all partial

我该怎么做:

<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,但无法找到我需要的东西。

2 个答案:

答案 0 :(得分: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"分隔的后的algin。

答案 1 :(得分:0)

由于您正在使用HTML,因此您可以使DOMDocument正常工作。它有点抽象,但可能比复杂的正则表达式更容易阅读和更改

有些库在处理HTML片段方面比domdocument更好,但是如果你想使用内置函数,那么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);