使用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
,然后再使用implode
和file_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);
重新重写文件。
答案 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");
?>
答案 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
<?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;
*/?>
注意-仅当存在结束标记时,此选项才起作用。在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!";
*/?>
结果:世界您好!