我怎样才能输出一个字符串作为文本,但执行任何php代码内

aoyhnmkz  于 2023-08-02  发布在  PHP
关注(0)|答案(1)|浏览(100)

我正试图建立一个电子邮件签名生成器为我们所有的客户端,每个客户端的签名将是不同的,无论是在风格和内容。我试图用WordPress和Formidable Forms来实现这一点,设置如下:

  • 我们为每个客户端创建一个表单,其中包含必要的字段。提交表单后,用户将被重定向到特定页面,该页面应包含生成的电子邮件签名的预览和用于在电子邮件客户端中设置其签名的HTML输出。
  • 用户被重定向到的页面有一个指定的页面模板和一个自定义字段,我们可以在其中放置签名的完整HTML代码。在这个HTML代码中,我们需要输出通过表单提交的信息。FormidableForms允许我们使用短代码从具有ID的字段中输出数据。页面URL包含一个带有条目ID的参数,这样当有人提交表单时,我就可以从当前条目中获取数据。表单ID位于用户定向到的页面上的自定义字段内。

由于HTML代码是在一个字符串中,我可以很容易地输出为纯文本,以便用户可以复制它,但其中的PHP作为输出的文本以及。我需要一种方法来输出的HTML作为文本,但执行PHP,使强大的简码是由实际数据取代。
举例来说:

$content = "<h2><?php echo do_shortcode('[frm-field-value field_id=11 entry="2"]') ?></h2>"
echo $content;

// The output now: <h2><?php echo do_shortcode('[frm-field-value field_id=11 entry="2"]') ?></h2>

// I need it to be: <h2>My name</h2>

字符串
有没有办法做到这一点?我们可以完全控制将被填充到自定义字段中的HTML,因此不会使用恶意代码。

o7jaxewo

o7jaxewo1#

你很接近了,但情况正好相反:

$content = do_shortcode('<h2>[frm-field-value field_id=11 entry="2"]</h2>');
echo $content; # <h2>My name</h2>

字符串

不要将PHP tags放在字符串中。这只是自找麻烦,当你在字符串数据中发现<?php和类似的东西时,你也会感到困惑。
始终将数据和代码很好地分开。
注意 frm-field-value 短代码是否正确返回HTML转义的内容,例如一个“name”“Martha <the great>“变成了<h2>Martha &lt;the great&gt;</h2>,否则你会有HTML注入(有趣的是从未关闭的开始)。

相关问题