在随机文本的echo中包含php代码

时间:2011-02-17 22:57:04

标签: php random echo

我想随机显示一个PHP代码,所以我有

<?php

// load the file that contain thecode
$adfile = "code.txt";
$ads = array();

// one line per code
$fh = fopen($adfile, "r");
while(!feof($fh)) {

  $line = fgets($fh, 10240);
  $line = trim($line);
  if($line != "") {
    $ads[] = $line;
  }
}

// randomly pick an code
$num = count($ads);
$idx = rand(0, $num-1);

echo $ads[$idx];
?>

code.txt包含类似

的行
<?php print insert_proplayer( array( "width" => "600", "height" => "400" ), "http://www.youtube.com/watch?v=xnPCpCVepCg"); ?>

Proplayer是一个显示视频的wordpress插件。 code.txt中的代码运行良好,但是当我使用code.txt中的选择行时则不行。而不是我得到的完整的PHP行:

"width" => "600", "height" => "400" ), "http://www.youtube.com/watch?v=xnPCpCVepCg"); ?>

如何让echo显示php代码,而不是php代码的txt版本?

2 个答案:

答案 0 :(得分:1)

尝试使用htmlentities()来逃避php代码。类似的东西:

$string = '<?php print insert_proplayer( array( "width" => "600", "height" => "400" ), "http://www.youtube.com/watch?v=xnPCpCVepCg"); ?>';
echo htmlentities($string);

答案 1 :(得分:0)

使用eval:http://php.net/eval

修改

或者更好的是,使用包括。这可以是if-else语句,switch语句,数组或可以从选项中进行选择的任何内容。示例code.php:

<?php
    if ($i == 1)  // use better variable name
        print 'blah blah blah';
    else if ($i == 2)
        print 'blah blah blah';
    else if ($i == 3)
        print 'blah blah blah';
    // ...
    else if ($i == $max)
        print 'blah blah blah 4';
?>

致电页面:

<?php
    $max = 5;  // set max to however many statements there are
    $i = rand(1, $max);
    include('code.php');
?>