考虑以下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”属性使“已替换”值呢?
答案 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);