正则表达式 - 替换内容 - eZ Publish XML 字段
Regex - Replacing content - eZ Publish XML field
我有一个 Xml 内容,我想在使用 eZ Publish 5 API 创建它之前对其进行修改。
我正在尝试实现一个 Regex 来修改内容。
这是我拥有的 Xml 代码(具有 html 个实体):
Print of Xml code http://img15.hostingpics.net/pics/453268xmlcode.jpg
我希望能够在 :
中捕捉到 empty.jpg
<img alt="" src="http://www.asite.org/empty.jpg" />
并将整行 每次出现 替换为:
<custom name="my_checkbox"></custom>
问题:
img 标签有时可以包含其他属性,例如:height="15" width="12"
<img height="15" alt="" width="12" src="http://www.asite.org/empty.jpg" />
有时属性以不同的顺序位于 src 属性之后。
目标是:
Xml code - Aim http://img15.hostingpics.net/pics/318980xmlcodeaim.jpg
到目前为止,我已经尝试了很多方法,但没有任何效果。
在此先感谢您的帮助。
干杯!
编辑:
这是我迄今为止尝试过的示例:
/(<img [a-z = ""]* src="http:\/\/www\.asite\.org\/empty\.jpg" \/>)/g
处理 XML 我使用了 XML 解析器来到达所需的部分。
然后我们可以将正则表达式 (~<img.*?>(?=</span)~
) 应用于 select 并将图像标签替换为您的自定义标签(请注意,在 xml 解析器接收到的对象中 html 实体被替换为它们的等效字符)。
这是一段模拟和处理您的情况的代码:
<?php
$xmlstr = <<<XML
<sections>
<section>
<paragraph>
<literal class="html">
<img alt="" src="http://asite.org/empty.png" /></span></span> Yes/no&nbsp;<br />
<img alt="" src="http://asite.org/empty.png" /></span></span> Other text/no&nbsp;<br />
</literal>
</paragraph>
</section>
</sections>
XML;
$sections = new SimpleXMLElement($xmlstr);
foreach ($sections->section->paragraph as $paragraph) {
$re = "~<img.*?>(?=</span)~";
$subst = "<custom name=\"my_checkbox\"></custom>";
$paragraph->literal = preg_replace($re, $subst, $paragraph->literal);
}
echo $sections->asXML();
?>
输出为:
<?xml version="1.0"?>
<sections>
<section>
<paragraph>
<literal class="html">
<custom name="my_checkbox"></custom></span></span> Yes/no&nbsp;<br />
<custom name="my_checkbox"></custom></span></span> Other text/no&nbsp;<br />
</literal>
</paragraph>
</section>
</sections>
可以找到在线演示HERE
我有一个 Xml 内容,我想在使用 eZ Publish 5 API 创建它之前对其进行修改。
我正在尝试实现一个 Regex 来修改内容。
这是我拥有的 Xml 代码(具有 html 个实体):
Print of Xml code http://img15.hostingpics.net/pics/453268xmlcode.jpg
我希望能够在 :
中捕捉到 empty.jpg<img alt="" src="http://www.asite.org/empty.jpg" />
并将整行 每次出现 替换为:
<custom name="my_checkbox"></custom>
问题:
img 标签有时可以包含其他属性,例如:height="15" width="12"
<img height="15" alt="" width="12" src="http://www.asite.org/empty.jpg" />
有时属性以不同的顺序位于 src 属性之后。
目标是:
Xml code - Aim http://img15.hostingpics.net/pics/318980xmlcodeaim.jpg
到目前为止,我已经尝试了很多方法,但没有任何效果。
在此先感谢您的帮助。
干杯!
编辑:
这是我迄今为止尝试过的示例:
/(<img [a-z = ""]* src="http:\/\/www\.asite\.org\/empty\.jpg" \/>)/g
处理 XML 我使用了 XML 解析器来到达所需的部分。
然后我们可以将正则表达式 (~<img.*?>(?=</span)~
) 应用于 select 并将图像标签替换为您的自定义标签(请注意,在 xml 解析器接收到的对象中 html 实体被替换为它们的等效字符)。
这是一段模拟和处理您的情况的代码:
<?php
$xmlstr = <<<XML
<sections>
<section>
<paragraph>
<literal class="html">
<img alt="" src="http://asite.org/empty.png" /></span></span> Yes/no&nbsp;<br />
<img alt="" src="http://asite.org/empty.png" /></span></span> Other text/no&nbsp;<br />
</literal>
</paragraph>
</section>
</sections>
XML;
$sections = new SimpleXMLElement($xmlstr);
foreach ($sections->section->paragraph as $paragraph) {
$re = "~<img.*?>(?=</span)~";
$subst = "<custom name=\"my_checkbox\"></custom>";
$paragraph->literal = preg_replace($re, $subst, $paragraph->literal);
}
echo $sections->asXML();
?>
输出为:
<?xml version="1.0"?>
<sections>
<section>
<paragraph>
<literal class="html">
<custom name="my_checkbox"></custom></span></span> Yes/no&nbsp;<br />
<custom name="my_checkbox"></custom></span></span> Other text/no&nbsp;<br />
</literal>
</paragraph>
</section>
</sections>
可以找到在线演示HERE