preg_replace用于更改多个内容

时间:2014-09-14 23:11:21

标签: php xml preg-replace

我想使用preg_replace()将以下xml代码(xml的一小部分)更改为html。我尝试了xml解析工具,但我在xml的其余部分遇到了问题,因此我尝试找到像preg_replace()这样的解决方案。

<contrib-group>
    <contrib contrib-type="author">
        <name>
            <surname>Smith</surname>
            <given-names>John</given-names>
        </name>
        <xref ref-type="aff" rid="aff1">1</xref>
        <xref ref-type="corresp" rid="cor1" />
    </contrib>
    <contrib contrib-type="author">
        <name>
            <surname>Hoper</surname>
            <given-names>Alfred</given-names>
        </name>
        <xref ref-type="aff" rid="aff2">2</xref>
    </contrib>
    <contrib contrib-type="author">
        <name>
            <surname>Bay</surname>
            <given-names>Elisabeth</given-names>
        </name>
        <xref ref-type="aff" rid="aff3">3</xref>
    </contrib>
    <contrib contrib-type="author">
        <name>
            <surname>Back</surname>
            <given-names>James</given-names>
        </name>
        <xref ref-type="aff" rid="aff2">2</xref>
    </contrib>
    <contrib contrib-type="author">
        <name>
            <surname>Hampton</surname>
            <given-names>George</given-names>
        </name>
        <xref ref-type="aff" rid="aff4">4</xref>
    </contrib>
</contrib-group>

最终文本应该是:

Smith J<sup>1*</sup>, Hoper A<sup>2</sup>, Bay E<sup>3</sup>, Back J<sup>2</sup>, Hampton G<sup>4</sup>

我可以使用以下表达式更改其中一些:

$data = preg_replace('/<xref(.*?)>(.*?)<\/xref>/i', '<sup>$2</sup>', $data);
$data = preg_replace('/</contrib>.*?<contrib contrib-type="author">/i', ', ', $data);

但我不能做所有这些。

有可能吗?

0 个答案:

没有答案