1. 如何查看php代码语法错误
错误抑制符去掉错误信息,eval和echo一样并不是函数,不能使用变量函数的方法调用比如:$func = ‘eval’$func()这样的调用就是无效的。它会提示没有eval函数,如果你自己定义这么一个函数也是有问
错误抑制符去掉错误信息,eval和echo一样并不是函数,不能使用变量函数的方法调用比如:
$func = ‘eval’
$func()这样的调用就是无效的。它会提示没有eval函数,如果你自己定义这么一个函数也是有问题的。因为eval是一个关键字。
eval调用和include差不多,如果被包含文件中没有明确return就返回null。如果直接eval我们需要检查的文件会造成被检查的文件内代码被执行,这可不是我们想要的,我们只需要检查一下这个文件的语法是否正确。 我们可以在要检查的文件之前添加return 语句,让代码提前跳出,那么后面的代码就不会执行了。好的,就这么干。代码如下:
< ?PHP
if(!function_exists('PHP_check_syntax')) {
function PHP_check_syntax($file_name,
&$error_message = null) {
$file_content = file_get_contents($file_name);
$check_code = "return true; ?>";
$file_content = $check_code .
$file_content . "< ?PHP ";
if(!@eval($file_content)) {
$error_message = "file: " .
realpath($file_name) . " have syntax error";
return false;
}
return true;
}
}
if(!PHP_check_syntax("file.PHP", $msg)) {
echo $msg;
}
else {
echo "Woohoo, OK!";
}
< ?PHP
foreach:: a => b
?>
因为Parse error 是没法被 set_error_handler处理函数处理的。这个异常没办法catch到。所以才使用了@来抑制错误。这带来的问题就是我们无法得到详细的错误信息。 不过目前我需要的功能也只是检查语法是否正确。不正确的话重新编译模板文件,就这么简单,至于语法错误,在显示网页的时候自然会看得到。
PHP检查语法错误最好的办法就是这个被遗弃的PHP_check_syntax这个方法回到PHP中。下次再研究下他们是出于什么原因把这个函数去掉的。
2. PHP是什么,它的基本语法是什么
PHP 脚本主要用于以下三个领域:
服务端脚本。这是 PHP 最传统,也是最主要的目标领域。开展这项工作需要具备以下三点:PHP 解析器(CGI 或者服务器模块)、web 服务器和 web 浏览器。需要在运行 web 服务器时,安装并配置 PHP,然后,可以用 web 浏览器来访问 PHP 程序的输出,即浏览服务端的 PHP 页面。如果只是实验 PHP 编程,所有的这些都可以运行在自己家里的电脑中。
命令行脚本。可以编写一段 PHP 脚本,并且不需要任何服务器或者浏览器来运行它。通过这种方式,仅仅只需要 PHP 解析器来执行。这种用法对于依赖 cron(Unix 或者 Linux 环境)或者 Task Scheler(Windows 环境)的日常运行的脚本来说是理想的选择。这些脚本也可以用来处理简单的文本。
编写桌面应用程序。对于有着图形界面的桌面应用程序来说,PHP 或许不是一种最好的语言,但是如果用户非常精通 PHP,并且希望在客户端应用程序中使用 PHP 的一些高级特性,可以利用 PHP-GTK 来编写这些程序。用这种方法,还可以编写跨平台的应用程序。PHP-GTK 是 PHP 的一个扩展,在通常发布的 PHP 包中并不包含。
那么如何做第一个PHP页面呢?
步骤如下:
先启动web服务器代码如下:
sudo service apache2 start
在 web 服务器根目录(/var/www/html)下建立一个文件名为 hello.php
sudo gvim /var/www/html/hello.php
创建php新文件时,使用超级用户权限来创建,即sudo gvim test.php,这样也省得后来修改文件权限。否则文件无法写入。然后完成如下内容:
3. php 中的:是什么意思啊
PHP中“?:”指的是三目运算符。
三目运算符,也称为条件运算符,它是计算机语言的重要组成部分。它是唯一具有3个操作数的运算符,因此有时称为三元运算符。通常,三目算子的组合是右边界。
三目运算符提供了一种表达简单if-else语句的简便方法。运算符由以下格式的问号(?)和冒号(:)组成:表达式?表达式:表达式;一条语句称为条件表达式,由3个子表达式组成,并使用问号?和冒号:分开。
条件表达式中问号之前的部分是要测试的条件。这就像if语句括号中的表达式。如果条件为真,则执行?之间的语句。和:;否则,执行以下部分。如果您认为有帮助,可以在子表达式两边加上括号
(3)php语法扩展阅读:
<php>函数的操作规则
1、对于条件表达式b? x:y,首先计算条件b,然后判断。如果b的值为true,则计算x的值,并且运算的结果为x的值;否则,计算出y的值,并且运算的结果是y的值。
2、条件表达式永远不会同时计算x和y。条件运算符是右关联的,即从右到左分组。例如,一个? b:c? d:e将被执行为? b:(c→d:e)。
3、可以理解为:条件?结果1:结果2,在里面?该数字是格式要求。也可以理解为条件是否为真,条件成立为结果1,否则为结果2。
4. php语法报错 为什么他写的可以我的就报错
你的最后一句echo "发布成功"最后没有加结束符就是分号,应该是这样
echo "发布成功";
注意:写php代码的时候,写完一句以后一定要在后面加结束符分号
5. PHP 中的语法错误
$webmpa = $_SERVER["PHP_SELF"]; //获取当前执行脚本的文件名, 我的测试环境下值是/test/test.php
$webmpa = dirname($webmpa); //获取文件的路径部分, 我的测试环境下的值是/test
$webmpa = explode('/', $webmpa); //对路径用"/"分割成数组, 我的测试环境下值是array(0 => '', 1 => 'test')
$wnum = count($webmpa) - 6; //这一步我不懂, 为什么要获得数组长度减6的值? 我的测试环境下的值是-4
//问题就出在这里, $i初值是1, 第一次循环的条件就不符合, 所以for里面的代码没有执行过
for($i=1; $i<$wnum; $i++){
$webmp = $ i== 1? $webmpa[$i] : $webmp . '/' . $webmpa[$i];
}
$webml = 'http://'.$_SERVER['HTTP_HOST'].'/';
//这里用到了$webmp, 但是在我的测试环境下, for里面没有被执行过, 所以$webmp是不存在的, 程序报了一个警告$webmp未定义
$webwapurl = $webml . $webmp . '/' . 'upload/';
$baseUrl = $webwapurl;
6. PHP语言里{**}是什么意思
这个应该是模板标签,而不php语法
也许php可以自己写代码去解析,但不能说这个就是php语言
也就是说你发的和php没有必然联系。。。。
7. php中关于<php>的语法问题 。
因为2,3之间是属于Html代码,1-2,3-4之间是php代码,所以需要隔开
<?php
?>之间是用来写php代码的
8. php中$符号是什么意思
$这个符号的意思是:变量
PHP采用的是C语言的语法,但是也有一些区别。$符号加上字符串,这就是来一个变量源名或对象名。
MyClass是个类名,不用加$符号。$_val是个私有变量,一般是以$加下划线加字符串组成的,foo和foo1是两个成员函数。不用加$符号,$my是一个对象,必须加$符号。
(8)php语法扩展阅读:
像C语言一样,PHP中也有三目运算符“?:”。它的运行机制如下:(expr1)?(expr2):(expr3)
其中的Expr1、Expr2及Expr3均为表达式。当表达式Expr1为真时则执行后边的Expr2,反之则执行Expr3。从分析中不难看出,三目运算符“?:”实际上也就是if…else的简化版。
PHP赋值运算符PHP赋值运算符用于向变量写值。PHP中基础的赋值运算符是"="。这意味着右侧赋值表达式会为左侧运算数设置值。
网络-PHP运算符
9. 在php语法里=与==的区别是什么
=是赋值,比如$a =1 ,是把1的值赋给$a。 ==是等于的意思,$a==1就是$a等于1。
10. PHP语法错误
这个是模板文件编译后出现的语法错误,可以检查模板文件有没有写法问题。
可以按提示的
D:phpStudyWWWMyRuntimeCacheHome.phpLINE:513
这个文件和行,对应找出模板文件出问题的地方,再检查修复