获取属性值并替换标签PHP

时间:2020-10-21 13:51:50

标签: php regex

考虑以下HTML ...

<p>Hello <var data-mach="reg_name">Registrant Name</var>, your email is <var data-mach="reg_email">Registrant Email</var></p>

还有这个数组...

$data = [
  'reg_name' => 'Elon',
  'reg_mail' => 'elon@spacex.com'
];

在能够使用data-mach属性作为替换数据的键的地方,如何替换var标签?

最终结果将是...

Elon,您好,您的电子邮件为elon@spacex.com

我知道我可以做...

$str = '<p>Hello <var data-mach="reg_name">Registrant Name</var>, your email is <var data-mach="reg_email">Registrant Email</var></p>';

$result = preg_replace('/<var.*?var>/', 'Replaced', $str);

但是如何使用“ data-mach”属性使“已替换”值呢?

1 个答案:

答案 0 :(得分:1)

正则表达式尚未优化,但是您可以尝试使用https://www.php.net/manual/ru/function.preg-replace-callback.php

$str = '<p>Hello <var data-mach="reg_name">Registrant Name</var>, your email is <var data-mach="reg_email">Registrant Email</var></p>';

// $result = preg_replace('/<var.*?var>/', 'Replaced', $str);

$data = [
  'reg_name' => 'Elon',
  'reg_email' => 'elon@spacex.com'
];

$result = preg_replace_callback('/<var.*?"(.*?)".*?var>/', function ($matches) use ($data) {
            return $data[$matches[1]];
        }, $str);

var_dump($result);
相关问题