我允许用户创建具有空白属性值的XML
元素,例如:
<crimes id="" total="" />
同时我也从数据库中检索associative array
,用于填充XML指定的属性。该数组将如下所示:
array(
theft => 123,
burglary => 456
)
在检索数组之后,我想使用该数组来填充已传入的XML的属性值。例如,第一个与示例XML结合的数组元素将如下所示:
<crimes id="theft" total="123" />
有没有办法在regular expression
中使用PHP
在array values
的引号之间插入XML attributes
?
答案 0 :(得分:0)
唯一可行的方法是,您收到的XML标记是否一致。它们每次都必须相同,否则无模式,正则表达式用于匹配模式。
如果您的代码始终有id
和total
,那么我可以为其编写正则表达式。但如果他们有时有一个或另一个,那就太复杂了,你需要一个解析器。
答案 1 :(得分:0)
虽然(你已经被告知)你应该更好地使用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”或“total” - 它只是省略了它。