使用RegEx在引号之间插入字符串

时间:2014-01-29 23:00:42

标签: php regex

我允许用户创建具有空白属性值的XML元素,例如:

<crimes id="" total="" />

同时我也从数据库中检索associative array,用于填充XML指定的属性。该数组将如下所示:

array(
    theft => 123,
    burglary => 456
)

在检索数组之后,我想使用该数组来填充已传入的XML的属性值。例如,第一个与示例XML结合的数组元素将如下所示:

<crimes id="theft" total="123" />

有没有办法在regular expression中使用PHParray values的引号之间插入XML attributes

2 个答案:

答案 0 :(得分:0)

唯一可行的方法是,您收到的XML标记是否一致。它们每次都必须相同,否则无模式,正则表达式用于匹配模式

如果您的代码始终有idtotal,那么我可以为其编写正则表达式。但如果他们有时有一个或另一个,那就太复杂了,你需要一个解析器。

答案 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” - 它只是省略了它。