Я хочу изменить следующий код XML (небольшая часть XML) на HTML с помощью preg_replace()
, Я пробовал инструменты синтаксического анализа 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);
Но я не мог сделать все из них.
Является ли это возможным ?
Задача ещё не решена.
Других решений пока нет …