用eval(PHP)定义一堆函数

Mic*_*lan 0 php eval function heredoc

这是否接近可以接受的东西?我需要为每个HTML标记创建一个函数,并且需要将它们定义为以后在Heredoc字符串中使用.到目前为止这是我的代码.

<?php
$tags = array (h1, h2, h3, b, i);

foreach ($tags as $key => $value)
{
    eval ('function '.$value.' ($str) { return "<'.$value.'>$str</'.$value.'>"; }');
}
Run Code Online (Sandbox Code Playgroud)

这基本上处理了关于heredoc中的函数的Heredoc问题.一个简单的例子:

<<<example
<h1>This is ordinary HTML</h1>
{$h1('This is HTML via. PHP')}
example;
Run Code Online (Sandbox Code Playgroud)

我心里都做了所有的代码,所以如果它们包含任何错误,请不要惊讶.我还没有执行eval-function,但它看起来还不错.无论如何,我的问题是:这是好的,还是更好的做法:

function h1 ($str) { return ...; }
function h2 ($str) { return ...; }
function h3 ($str) { return ...; }
function b ($str) { return ...; }
function i ($str) { return ...; }
Run Code Online (Sandbox Code Playgroud)

等等 ..?

Jim*_* W. 5

您可以使用PHP提供的create_function但是......由于代码很简单,为什么不使用一个函数来统治它们呢?

function createTag($tag, $text) {
     return "<{$tag}>{$text}</{$tag}>";
}
Run Code Online (Sandbox Code Playgroud)

应该做你想做的事.

作为一个想法,您可能想要查看PHP DOM,因为这可能是要走的路,但是需要一些时间来学习并习惯使用它.