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_matchfor $needle。如果找到,我如何得到该词的其余部分(即,$pincushion)?

我试过preg_split了,但它不允许我使用“对齐”作为分隔符。(说得通)

这不能是 jquery / javascript - 它必须发生在呈现的 html 代码中。

有什么想法吗?我现在花了 10 个小时寻找没有真正运气的答案。我确实遇到了 DomDocument,但也找不到我需要的东西。

4

2 回答 2

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 回答
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查找 algin 后跟由orn-chars分隔。"

于 2013-03-08T16:52:42.367 回答