我允许用户创建带有空白属性值的XML
元素,例如:
<crimes id="" total="" />
同时,我还从数据库中检索一个关联数组
,用于填充XML指定的属性。数组将如下所示:
array(
theft => 123,
burglary => 456
)
检索数组后,我想使用该数组来填充已传入的XML的属性值。因此作为示例,第一个数组元素与示例XML组合将如下所示:
<crimes id="theft" total="123" />
有没有办法在PHP
中使用正则表达式
在XML属性
的引号之间插入数组值
?
这唯一有效的时候,是如果你收到的XML标签是一致的。它们每次都需要相同,否则没有模式,正则表达式用于匹配模式。
如果您的标签总是有id
和总
,那么我可以为它编写一个正则表达式。但是如果它们有时有一个或另一个,它会变得太复杂,您需要一个解析器。
虽然(正如您已经被告知的)您应该更好地使用SimpleXML或DOM,但这是您要求的自定义RegEx解决方案:
$list = array(
"theft" => 123,
"burglary" => 456
);
$template = '<crimes id="" total="" />';
foreach($list as $key => $value)
{
$s = preg_replace('/(id=")(")/', '${1}'.$key.'${2}', $template);
$s = preg_replace('/(total=")(")/', '${1}'.$value.'${2}', $s);
echo htmlentities($s)."<br>";
}
这是它的输出:
<crimes id="theft" total="123" />
<crimes id="burglary" total="456" />
如果缺少“id”或“总”——它只是省略它。