使用 preg_replace 将模板渲染为真实的 html
rendering template to real html using preg_replace
我想用 HTML 代码替换模板,效果很好,但问题是我在呈现的 HTML 中使用了 php 代码,但它不能' t 运行 就像字符串一样打印出来。
这是代码:
$template = '[text required id="first_name" label="First Name"]';
$pattern = ['/^\[([a-z]+)\s{1,}(required)?\s{1,}(?:id|label)="([^"]+)"\s{1,}(?:id|label)="([^"]+)"\s{0,}\]/im'];
$replacement = ['<label for=""> ()</label>
<input type="text" name="" id=""
<?php if( !empty($data[""]) ) { echo \'value="{$data[\"\"]}"\'; }?> />'];
$output = preg_replace($pattern, $replacement, $template);
echo $output;
这是输出:
这是输出的来源:
提前致谢。
因为你想计算 PHP 所以它必须在服务器端并且在从服务器输出之前执行。我希望你清楚这一点。
现在,因为您需要在服务器上 运行 它并且您正在服务器上生成代码本身,如何直接 运行 将它而不存储在字符串中,除非您是从其他地方获取 php 代码作为来自数据库的字符串。
但是,您可以使用eval
函数来计算PHP中的一串代码。但是,我不建议这对您的网站构成安全风险。
正如PHP manual所说:
Caution
The eval()
language construct is very dangerous because it allows execution of arbitrary PHP code. Its use thus is discouraged. If you have carefully verified that there is no other option than to use this construct, pay special attention not to pass any user provided data into it without properly validating it beforehand.
所以你应该非常小心。
希望对您有所帮助。
这就是答案
<?php
$template = '[text required id="first_name" label="First Name"]';
$pattern = ['/^\[([a-z]+)\s{1,}(required)?\s{1,}(?:id|label)="([^"]+)"\s{1,}(?:id|label)="([^"]+)"\s{0,}\]/im'];
$replacement = ['<label for=""> ()</label>
<input type="text" name="" id="" '. get_data("") .' />'];
$output = preg_replace($pattern, $replacement, $template);
echo $output;
function get_data($index){
if( !empty($data[$index]) ) {
echo 'value="{$data[$index]}"';
}
}
我想用 HTML 代码替换模板,效果很好,但问题是我在呈现的 HTML 中使用了 php 代码,但它不能' t 运行 就像字符串一样打印出来。 这是代码:
$template = '[text required id="first_name" label="First Name"]';
$pattern = ['/^\[([a-z]+)\s{1,}(required)?\s{1,}(?:id|label)="([^"]+)"\s{1,}(?:id|label)="([^"]+)"\s{0,}\]/im'];
$replacement = ['<label for=""> ()</label>
<input type="text" name="" id=""
<?php if( !empty($data[""]) ) { echo \'value="{$data[\"\"]}"\'; }?> />'];
$output = preg_replace($pattern, $replacement, $template);
echo $output;
这是输出:
这是输出的来源:
提前致谢。
因为你想计算 PHP 所以它必须在服务器端并且在从服务器输出之前执行。我希望你清楚这一点。
现在,因为您需要在服务器上 运行 它并且您正在服务器上生成代码本身,如何直接 运行 将它而不存储在字符串中,除非您是从其他地方获取 php 代码作为来自数据库的字符串。
但是,您可以使用eval
函数来计算PHP中的一串代码。但是,我不建议这对您的网站构成安全风险。
正如PHP manual所说:
Caution The
eval()
language construct is very dangerous because it allows execution of arbitrary PHP code. Its use thus is discouraged. If you have carefully verified that there is no other option than to use this construct, pay special attention not to pass any user provided data into it without properly validating it beforehand.
所以你应该非常小心。
希望对您有所帮助。
这就是答案
<?php
$template = '[text required id="first_name" label="First Name"]';
$pattern = ['/^\[([a-z]+)\s{1,}(required)?\s{1,}(?:id|label)="([^"]+)"\s{1,}(?:id|label)="([^"]+)"\s{0,}\]/im'];
$replacement = ['<label for=""> ()</label>
<input type="text" name="" id="" '. get_data("") .' />'];
$output = preg_replace($pattern, $replacement, $template);
echo $output;
function get_data($index){
if( !empty($data[$index]) ) {
echo 'value="{$data[$index]}"';
}
}