如何注释文件中的PHP代码

时间:2019-03-03 06:31:36

标签: php

使用PHP如何在某些php code内的所有php file中进行评论

例如,如果我有followig文件

$file = 'myfile.php';

只有PHP代码

<?php
$c = 'anything';
echo $c;
?>

我想使用PHP进行注释(在打开标签/*之后添加<?php,在关闭标签*/之前添加?>

<?php
/*
$c = 'anything';
echo $c;
*/
?>

以及如何通过注释将反向操作(删除/* */)返回到

<?php
$c = 'anything';
echo $c;
?>

我一直在考虑先使用array_splice然后再进行str_replace,然后再使用implodefile_put_contents,但是仍然不知道该怎么做。

更新

好的,与此同时我得到了一些帮助,我想到了这个主意……使用数组!

在打开标签/*之后添加块注释<?php,我会将文件内容转换为数组

$contents = file($file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

然后我可以array push 2/*位置的新元素

反之,我将使用unset($contents[1]);取消位置2处的元素,这意味着/*将消失

稍后我可以file_put_contents($file, $contents);重新重写文件。

4 个答案:

答案 0 :(得分:2)

您可以使用PREG_REPLACE:

<?php
    function uncomment($file_path) {
        $current = file_get_contents($file_path);
        $current = preg_replace('/\\/\\*(.+?)\\*\\//s', '$1', $current);
        file_put_contents($file_path, $current);

        return $current;
    }

    echo "<plaintext>" . uncomment("code.php");
?>

之前:

enter image description here

之后:

enter image description here

答案 1 :(得分:1)

  

我不知道您为什么要注释或取消注释php代码,但我认为这不是一个好方法。 我建议您使用变量或常量,例如:

启用或禁用代码的另一种方法是第二次使用常量:

切换/取消评论:

您将能够做到:

uncomment("code.php", "MYENV_DEBUG"); // uncomment
uncomment("code.php", "MYENV_DEBUG"); // comment
uncomment("code.php", "MYENV_DEBUG"); // uncomment
uncomment("code.php", "MYENV_DEBUG"); // comment

第一次:

enter image description here

第二时间:

enter image description here

第三时间:

enter image description here

代码:

<?php
    function uncomment_header($name, $value) {
        return '<?php define("' . $name . '", ' . $value . '); ?>';
    }

    function uncomment($file_path, $name) {
        $current = file_get_contents($file_path);
        $regex = '/<\\?php define\\("' . $name . '", (0|1)\\); \\?>/';

        if (preg_match($regex, $current, $match)) {
            $value = ($match[1] == 1) ? 0 : 1;
            $current = preg_replace($regex, uncomment_header($name, $value), $current);
        } else {
            $header = uncomment_header($name, 1) . "\n";
            $start = 'if (' . $name . '):';
            $end = 'endif;';

            $current = $header . $current;
            $current = preg_replace('/\\/\\*(.+?)\\*\\//s', $start . '$1' . $end, $current);
        }

        file_put_contents($file_path, $current);

        return $current;
    }

    echo "<plaintext>" . uncomment("code.php", "MYENV_DEBUG");
?>

答案 2 :(得分:0)

赞:

#canned test data, a string and the file contents are the same
$contents = <<<'CODE'
<?php
$c = 'anything';
echo $c;
?>
CODE;

$contents = preg_replace(['/<\?php\s/','/\?\>/'], ['<?php/*', '*/?>'], $contents);

echo $contents;

输出

<?php/*
$c = 'anything';
echo $c;
*/?>

Sandbox

注意-仅当存在结束标记时,此选项才起作用。在PHP中,结束标记实际上是可选的。尽管它会捕获结尾的标签,但它也不适用于短标签<?<?=之类的东西。

由于这些极端情况,正则表达式(或任何字符串替换)很难做到。

PHP代码的有效示例

<?php
  $c = 'anything';
  echo $c;
?>
//-------- no ending tag ---------
<?php
  $c = 'anything';
  echo $c;
//------- short tags ---------
<? echo 'foo'; ?>

//------- short echo tags ---------
<?= $foo; ?>
  etc...

如果你想抓住所有人的话,祝你好运。...

答案 3 :(得分:0)

PHP中有两种类型的注释1)单行注释2)php中单个注释的多行注释,我们只键入//或#,所有右边的文本将被PHP解释器忽略。例如

<?php
echo "code in PHP!"; // This will print out Hello World!

?> 结果:PHP代码!

对于多行注释,多行PHP注释以“ / *”开头,例如以“ /”结尾

<?php
/* This Echo statement will print out my message to the
the place in which I reside on.  In other words, the World. */
echo "Hello World!"; 
/* echo "My name is Noman Ali!";
echo "PHP Programmer!";
*/?>

结果:世界您好!