在OS X安装上PHP回声奇怪的字符(““”)

时间:2014-07-22 11:50:59

标签: php macos echo mamp virtualhost

这是我第一次在PHP上使用MAC,早些时候我一直在使用ubuntu机器进行PHP。

我已经成功安装了MAMP。现在我在 htdocs中有一个文件( index.php

<?php

   echo “hello”;

及其在 safari 上的输出是:

“helloâ€

我尝试了几种不同的文本,它们都在浏览器上产生了荒谬的输出。

mac,safari或MAMP中的问题在哪里?

enter image description here 更新:

如果没有卷曲引号,则输出为‘hello’

4 个答案:

答案 0 :(得分:1)

请勿使用等特殊引号,而应使用"'。一定要在编写代码时使用简单的文本编辑器,而不是像Word这样的东西,这会将简单的引号字符替换为更加花哨的字符。

PHP不理解花哨的引号,也不会用"'替换它们,它们在语言中具有特殊含义。

那么,为什么它没有破解? PHP非常宽容,这有利有弊。请考虑以下代码,它使用常量:

define('HELLO', 'Hello world!');
echo HELLO;

这样可以输出“Hello world!”

现在,如果我们将看起来像常量的东西传递给PHP但是没有定义它,那么PHP将只输出(不存在的)常量的名称:

echo HELLOWORLD;

这将输出“HELLOWORLD”。

文本位“hello”也是如此 - 它试图查找具有该名称的常量,找不到任何常量,因此只输出“hello”。这仅输出E_NOTICE错误,默认情况下可能会禁用该错误。建议在开发期间输出所有错误,以避免出现以下错误:

error_reporting(E_ALL);
echo “hello”;

这将输出:

  

注意:使用未定义的常量“hello” - 假设为“hello”

事实上,如果我们试图在这些特殊引号之间添加一个空格,它就会失败,因为常量的名称中不能有空格,所以文本根本无法解释:

echo “hello world”;
  

解析错误:语法错误,意外“世界”(T_STRING),期待','或';'

至于为什么像这样的特殊引号没有正确显示,这是因为编码问题。 的ASCII值大于127,因此可以根据编码以不同方式进行解释。您的文件以特定编码保存,但您的服务器和浏览器可能认为它位于另一个编码中,从而产生错误字符。

答案 1 :(得分:1)

你必须将你的docmuent设置为utf-8编码。

方法-1:将以下html代码添加到您的页面

<meta charset="utf-8" />

方法-2:使用如下的PHP代码

<?
header("Content-Type: text/html;charset=utf-8");  
echo “hello”;   
?>

header必须位于代码的第一行。

它将输出“hello”;如果您想输出hello,请将双引号更改为'hello'"hello"。因为你目前的双引号不是英文。

答案 2 :(得分:0)

您可以引用引号&#39; ,双引号&#34;

您的双引号应该是&#34; 而不是

答案 3 :(得分:0)

您的问题已编码,您必须UTF-8utf8_encode

string utf8_encode ( string $data )

注意如果不起作用意味着你的PC或浏览器的问题然后去控制panal Langs .. 希望听到你的回答......