胜博发娱乐平台mysql查询问题

( 胜博发娱乐平台 )

table:test
字段:uid,num,time
记录:
123,1,1372727555
123,1,1372727557

有没有一条语句能查出最后一条记录的时间,和这个用户一共有几条记录

SELECT time,count(*) FROM test where uid=123 order by time desc;
1372727555 ,2
这个只能查到第一条记录的时间,后面的order by失效

select max(time),count(*) from test where uid=123;

@halty 正解. 我这里说说楼主的sql哪里错了吧.

SELECT time,count(*) FROM test where uid=123 order by time desc;

select里用了聚集函数count(*), 则启用了分组机制, 即所有查询结果当成一个大组来处理. 而这里select, order by里的time没有放入聚集函数中, 这在标准sql里是不允许的. 但是mysql有group by的扩展, 可以给你返回一个值, 这个值按理是不确定的, 但根据实际经验, 一般都是在数据库中 实际存储 最前的那条记录.

所以, 上述sql 在select后只有一条记录, 针对此记录做了order by.

(看完/读完)这篇文章有何感想! 胜博发娱乐平台的分享…

胜博发娱乐symfony2 doctrine 如何分库分表

( 胜博发娱乐 )

随着数据库表慢慢大起来,想考虑分表。我这边用的是symfony2,所以想问问,symfony2如何分库分表。。。

先说跑题的一点:

如果数据库支持(如MySQL或者PostgreSQL),建议直接用数据库的partitioning,如果实在不能解决你的需要,在symfony 2里可以:

用事件监听的方式,根据用户ID或其他分库条件,来修改或者动态地注册数据库连接实例。

或者简单点,就自己注册多个连接实例,然后定义一个获取所需实例的helper,比如按用户ID来分库:

// (一)在app/config/config.yml里:
# 定义好各个数据库连接

// (二)在controller里:

private function getManager()
{
    $user = $this->getUser(); // 取得当前用户
    $shardId = null !== $user ? $user->getId() % 4 : 0; // 0,1,2,3共四个库

    return $this->getDoctrine()->getManager(sprintf('shard_%s', $shardId));
}

// (三)在业务Action里:
public function someAction()
{
    $om = $this->getManager(); // 这时拿到的就是对应当前用户的数据库连接实例了

    // ...
}

在你的业务代码中,你还得考虑分片化后业务的完整性。

和传统的不一样

(看完/读完)这篇文章有何感想! 胜博发娱乐的分享…

胜博发娱乐平台Symfony2 Demo配置失败

( 胜博发娱乐平台 )

我想添加一个页面,访问链接为/hello

配置步骤如下:

1.在app/AppKernel.php文件中加入代码:

public function registerBundles() {
$bundles[] = new Acme\HelloBundle\AcmeHelloBundle();
return $bundles;
}

2.app/config/routing.yml

acme_hello:
  resource: "@AcmeHelloBundle/Resources/config/routing.yml"
  prefix: /

3.src/Acme/HelloBundle/Resources/config/routing.yml

hello:
    pattern:  /hello/{name}
    defaults: { _controller: AcmeHelloBundle:Hello:index }

4.src/Acme/HelloBundle/Controller/HelloController.php

namespace Acme\HelloBundle\Controller;

use Symfony\Component\HttpFoundation\Response;

class HelloController 
{
    public function indexAction()
    {
        return new Response("Hello World");
    }
}

我几乎按照文档的步骤来做了,但还是出现了一些问题:

Cannot import resource "D:/xampp/htdocs/Symfony/app/config\routing.yml" from "D:/xampp/htdocs/Symfony/app/config/routing_dev.yml". (Unable to parse at line 2 (near "resource:"@AcmeHelloBundle/Resources/config/routing.yml"").) 

文档上写到执行一个命令行可以创建一个新的bundle,并在src/Acme目录下生成新的bundle目录,我的执行如下:

D:\xampp\php>php d:\xampp\htdocs\Symfony\app\console --namespace=Acme/HelloBundle --format=yml

不见有任何效果,所以就自己手动创建了

我曾经遇到过因为用tab导致yml解析错误的问题。第一个问题应该是文件格式不对。 第二个问题你光加namespace没用的。console里应该是create:bundle命令后面带namespace和format才好用。

从错误信息判断,应该是@AcmeHelloBundle/Resources/config/routing.yml这个文件里yaml语法不对,看看是不是缩进或者敲了非英文的空格之类的问题。

(看完/读完)这篇文章有何感想! 胜博发娱乐平台的分享…

胜博发娱乐又拍PW插件上传图片到又拍空间,图片出现裂缝会有哪些可能的原因?

( 胜博发娱乐 )

pw插件上传图片,图片出现裂缝….

这个问题已被关闭,原因:

能提供一下具体信息么?

(看完/读完)这篇文章有何感想! 胜博发娱乐的分享…

SBF胜博发老虎机php中特殊字符用html代码好还是转义好?

( SBF胜博发老虎机 )

嗯,因为是纯小白,这个问题可能有点菜,各位大神见谅……
就是在写php时,需要echo特殊字符,比如”这个符号,写入php时是用转义\”好还是用html代码"好呢?
请教各位,谢谢!

谢谢各位!已经大致明白了,非常感谢各位的耐心解答!
PS.php大神果然不一样,回答都是那么的详细~~在此感谢了!

要明白哪个好的话首先我们就要搞清楚两者之间的区别:

  • 使用转义的话就是相当于输出原字符,既然特殊字符原字符输出了的话就必须和页面的编码方式和浏览器的编码方式有关系。如果页面的编码(如GBK)中不包含该特殊字符的话,或者浏览器的编码方式不包含该特殊字符的话,就会出现乱码。

  • 你所说的HTML代码的正统名字叫做HTML 字符实体,英文名字叫做HTML Entities。使用字符实体的话浏览器会自己将代码转换为正确的字符,就少了对编码方式的要求。关于字符实体的内容你可以多看看这些页面:HTML 字符实体 | HTML Entities

总结来说,使用转义的话方便书写和阅读,但是对页面的编码方式有要求。使用HTML字符实体虽然少了编码方式的显示,但是不便于书写和阅读源码。所以我个人的建议是例如"这种稍微大众平常一点的字符还是转义输出比较好,而特殊的,可以独立于页面的特殊字符(如 © ® ™ 等)则使用字符实体的形式表现。字符实体这块虽然使用实体号来写会有更大的兼容性,但是个人倾向于用字符实体的名称,原因还是方便阅读。

转义和转义不一样

感性的来看,但凡在字符串本身当中,出现包裹字符串的分隔符(或其他直接使用有特殊意义的字符),都必须转义。但是不同的语言的转义,虽然目的一致,但要转的东西往往完全不同。

“转义\"好还是用html代码"好”?前者是PHP字符串的转义,后者是HTML语言的转义。使用场合都不同,所以千万不要混为一谈——完全不是等价讨论的概念。

题主问题中,前者使用的PHP字符串转义,就是双引号包裹的字符串当中,允许转义\"="\n=LF(0x0A)等字符。后者涉及的HTML转义就是用HTML实体(HTML Entities)表示字符,比如&=&

什么转义都不能省略

PHP的转义不能省略,不用多说(多数时候,不转义明显解析出错啊!)

但这里的问题是:PHP = Hypertext Preprocessor,PHP的输出就是HTML页面。在PHP中写的字符串常量,经常送给浏览器的HTML解析器。题主问的问题也是如此。

所以必须明确:题主的需求很可能涉及二次转义:先写出合法的PHP字符串常量,然后保证浏览器解析HTML后,输出的仍然是字符串的原样,而不会:

  • 特殊字符失效
  • 破坏HTML DOM结构
  • 被注入代码,产生安全问题

PHP和HTML,两个的转义都是不能省略的。题主问题的结论是:前者只做了PHP的转义,这个放在HTML正文中可以,但放在标签的属性值里不行。后者是做了HTML的转义,而PHP无需转义(视同已转义),OK。但重要的是:要知道“为什么”可以,而不是乱试最后“凑巧”可以。

我赞成的做法

虽然第二种可以,但我认为echo '"';这绝对是一种极其不良的实践。如果评一个“PHP最差编程习惯”,这个绝对有上榜的实力。

因为PHP先构造字符串,再处理成HTML的格式输出,这是一个有先后顺序的需求。如果直接把HTML实体写在PHP的字符串常量里,那就是把两个阶段转义的逻辑混杂在了一起。

在PHP中我比较赞成的方法,是将字符串的内容保持原样,在输出之前用htmlentitieshtmlspecialchars函数包裹之:(注意这两个函数略有区别,网上资料很多)

header("Content-Type: text/html; charset=utf-8");
echo htmlentities("\"M&M\""); # 显示:"M&M" 查看源代码:"M&M"

这样,写源代码的时候只需关心PHP的逻辑。最后由机器保证前台的输出,和字符串本身一致。

你可能总会在网上见到莫名其妙的真的出现一个“&”的情况——这就是不单点转义,而是把转义过程自以为是的到处乱放,最终造成重复做两遍HTML转义的错误。

数据可能到处输出,但数据的原样只有一个。不要把数据的原貌混杂到自己都认不清,这也很重要。

如何对付特殊符号?

对付©®™等特殊符号,以及中文等涉及编码方式的地方,我和 @怡红公子 的看法是不太一致的。我的想法是:

  • 出现任何特殊符号,都真的原样写到字符串中去。中文也一样。
  • 转义仍然使用htmlentities来做。
  • PHP文件尽可能使用UTF-8无BOM格式存储。
  • 如果输出的编码不是UTF-8,则在HTML转义的后边,再加一层iconv转换。

因为我认为转义和编码方式还是一个事情的两个阶段,不宜混在一起谈。这个模型就像俄罗斯套娃一样,安装者一定是先装小的再套大的,而拆解者必然是先拆外边再拆里边。以GBK为例的逻辑就是:

  1. 先有原数据。——©公司"2014"
  2. 做成PHP的字符串常量。——"©公司\"2014\"" 以这个样子写进PHP脚本文件中
  3. 转义HTML实体。——©公司"2014" 此处PHP知道:字符串中有这些字符,这就行了,内部应该是Unicode存的但是我们可以不关心
  4. 转成GBK编码。——©+B9ABCBBE+"2014"中间的一段是4个字节的GBK码原始值
  5. 浏览器解开GBK编码:——©公司"2014"
  6. 再解开HTML实体————©公司"2014"
  7. 原样输出。

去掉编码,无非就是去掉了步骤4和5,和转义一点关系都不涉及到。

輸出HTML的東西都必須轉義(空格-> )。

永遠不要相信一切輸入。

(看完/读完)这篇文章有何感想! SBF胜博发老虎机的分享…

SBF胜博发老虎机中文分类或者关键字按拼音首字母排序

( SBF胜博发老虎机 )

目前知道以下这两种方案:
1. 录入时提取中文首字拼音的首字母存入数据库
2. 前台展示之前提取首字母并归类

有两个问题:
1. 以上的两种方案哪个更优?或者说有没其它方案?
2. 提取首字母有什么好的方案?(已在 github上找到一种 中文转拼音后再提取首字母,但不知道这种方案好坏与否)

存入数据库吧,这样以后如果做首字母匹配搜索也方便。

或者你可以考虑换用完整拼音:http://www.oschina.net/code/snippet_115552_4975

(看完/读完)这篇文章有何感想! SBF胜博发老虎机的分享…

SBF胜博发老虎机关于mac下自带的apache服务器的权限问题

( SBF胜博发老虎机 )

最近在mac上利用thinkphp开发项目,然后之前是在windows上写的,直接装了一个wamp的包,现在用mac,然后mac下是自带php和apache的,但是由于其严谨的权限机制,没有办法写入thinkphp动态生成的文件,导致我只要和数据库有关的代码都不能正常运行额。 并且我试过给apache的根路径加读写权限,但是还是报错,错误信息如下

不知道有没有大神遇到过类似的情况,然后我已经装了mysql,不知道再安装mamp这个包会不会和原来的apache+php+mysql环境起冲突(应该是不会,mamp只是一个独立的环境,但还是来求证一下) 应该是读写权限的问题,不知道是不是要改apache的配置文件什么的,请各位大大解答

  1. 加权限: chmod -R 777 /Library/WebServer/Documents

  2. 还有可能是大小写问题,*unix系统是区分大小写的。MAC 的文件系统默认是不区分的,但是万一以前格式化成了区分大小写的呢…

除了命令行的做法,还可以右键文件夹 点开“显示简介” 下面有调整权限的地方

可以安装MAMP,使用MAMP自带的apache MySQL php
理论上是个很可行的方法,不保证不会有意外情况。

目前这问题的解决办法:

sudo chown -R :_www /Library/WebServer        # 递归给目录设置属主为`_www`
sudo chmod -R g+rw /Library/WebServer          # 递归给目录读和写权限
sudo apachectl restart                        # 重启apache

(看完/读完)这篇文章有何感想! SBF胜博发老虎机的分享…

胜博发娱乐lnmp 二级目录index.htm无法访问

( 胜博发娱乐 )

二级目录下的静态文件index.htm无法访问

nginx的一个conf片段:

location / {
       root   /usr/share/nginx/html/www.abc.com;
        index  index.php index.htm;
    if (!-f $request_filename){
        set $rule_1 1$rule_1;
    }
    if (!-d $request_filename){
        set $rule_1 2$rule_1;
    }
    if ($rule_1 = "21"){
        rewrite /. /index.php last;
    }

    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }

    location ~ \.php$ {
        root   /usr/share/nginx/html/www.abc.com;
        fastcgi_pass   unix:/var/run/php-fpm.socket;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html/www.abc.com$fastcgi_script_name;
        include        fastcgi_params;
    }

(看完/读完)这篇文章有何感想! 胜博发娱乐的分享…

胜博发娱乐平台请问phpdocumentor如何使用

( 胜博发娱乐平台 )

操作过程如下:

$ /usr/local/php5/bin/pear channel-discover pear.phpdoc.org
Adding Channel "pear.phpdoc.org" succeeded
Discovery of channel "pear.phpdoc.org" succeeded

$ /usr/local/php5/bin/pear install phpdoc/phpDocumentor-beta
downloading phpDocumentor-2.0.0b7.tgz ...
Starting to download phpDocumentor-2.0.0b7.tgz (2,132,561 bytes)
.......................................................done: 2,132,561 bytes
install ok: channel://pear.phpdoc.org/phpDocumentor-2.0.0b7

$ /usr/local/php5/bin/pear>phpdoc -d /Library/WebServer/Documents/mail/lv/ -t /Library/WebServer/Documents/mail/test/

执行完后没有任何反映,请问怎么办?

(看完/读完)这篇文章有何感想! 胜博发娱乐平台的分享…

胜博发娱乐平台windows 下 PHP 的 open_basedir 怎么设置

( 胜博发娱乐平台 )

比如我的 test.php 文件在 G:\phpProject 下面,php.ini 设置成 open_basedir = .;G:/phpProject/

打开浏览器访问怎么一片空白,也没报错,该怎样设置

重要补充,我用的是TP框架

(看完/读完)这篇文章有何感想! 胜博发娱乐平台的分享…

胜博发娱乐七牛php sdk 有问题

( 胜博发娱乐 )

只能在七牛的lib库文件夹下建新文件,如果在外面引用的话,会报错 因为七牛的库文件里面,都是相互联系的,用include “”包含进来,包含的是相对地址 但是如果在外面建了文件夹,用include“”主入口,其他路径就不对了,运行不了sdk里面的demo

刚刚开始我以为sdk有问题,后头才发现只是路径有问题

希望工程师重写一下php sdk的问题,最后真心喜欢七牛,祝七牛越办越好

多谢,我们研究下 php 中的惯例做法。

(看完/读完)这篇文章有何感想! 胜博发娱乐的分享…

胜博发娱乐平台php sphinx搜索中文无结果

( 胜博发娱乐平台 )

php sphinx搜索中文无结果 , mysql的表是gbk的

sphinx.conf 设置的都是utf-8

ql_query_pre = SET NAMES utf8
charset_type = utf-8

利用sphinxclicent查询也是utf-8编码

比如我搜”龙” 就有结果,但是搜索”超”,就没结果

这什么情况?已经做了好几次全量索引了,没用啊。。。

试试配置

min_word_len = 1

Sphinx是一个在GPLv2下分发的全文检索引擎;Coreseek 是一个可供企业使用的、基于Sphinx(可独立于Sphinx原始版本运行)的中文全文检索引擎,按照GPLv2协议发行,商业使用(例如, 嵌入到其他程序中)需要联系我们以获得商业授权。

一般而言,Sphinx是一个独立的全文搜索引擎;而Coreseek是一个支持中文的全文搜索引擎,意图为其他应用提供高速、低空间占用、高结果相关度的中文全文搜索能力。Sphinx/Coreseek可以非常容易的与SQL数据库和脚本语言集成。

明白了吧,安装好sphinx后安装coreseek,用法和sphinx一样,用coreseek来创建索引/检索 中文

(看完/读完)这篇文章有何感想! 胜博发娱乐平台的分享…

胜博发娱乐百万级PV网站最低成本的架构和部署以及大数据量的存储设计与优化

( 胜博发娱乐 )

这个题目好像有点大,涉及的东西好像有点多!
随着市场的发展,现在越来越多的平台都要求具备大访问量、大数据量的高效处理能力 但是具体是什么样的呢?
主要有两大问题:
1、如何解决大访问量的问题,简单之:快、稳定、安全?
2、如何解决如此大的访问量所带来的大量数据的处理和存储?

涉及到:
1、系统
2、硬件

应用场景: 1、购物类 2、社区类

这个问题涉及到的知识比较多,涉及到的经验也会很丰富 我不知道我们这个社区有没有类型的问题,但是我只是希望大家来分享一下自己的经验和想法

我建议你考虑几个问题

  • 动态请求有什么特点
  • 及时性要求高么
  • 对一致性的要求搞么
  • 对数据丢失能容忍么
  • 消息类的请求多么
  • 读写的比例,读写的各种场景是什么
  • 图片多么,有大量的文件下载么
  • 对安全性要求高么
  • 涉及到金钱的问题么

把这些问题想明白了,再来考虑架构和硬件的问题

请先说明应用场景、需求,否则就很空洞

比如,如果只是服务静态文件,一台破机器足够了

现在完全没有必要自己维护硬件,直接采取成熟的弹性计算PaaS即可,剩下的就是程序的问题了

社区的feed是头疼的事。电商类订单和数据挖掘是最头疼的。 数据的存储现在成本太低廉了,千把块钱,几块NTB的硬盘自建raid。跟机房商量好带宽一切都好说。再不济,咱还有NAS。数据库这块儿可以用SSD,性能杠杠的。 硬件现在都好说,反倒程序、软件该好好研究鸟,数据量上来了,分表;访问量上来了,多服务器就是。不过程序写的2,再好的服务器也是白搭。

(看完/读完)这篇文章有何感想! 胜博发娱乐的分享…

胜博发娱乐php 使用其他类中方法时事务无效,什么原因会导致这样的问题?

( 胜博发娱乐 )

数据库是 mysql

其它程序中调用其它类方法时,事务正常!

烦心!

已经解决了,数据库类使用单例。

这个问题已被关闭,原因:

请重新描述,没明白什么问题。

该答案已被忽略,原因:

(看完/读完)这篇文章有何感想! 胜博发娱乐的分享…

胜博发娱乐平台【SOS】nginx无法解析php文件?

( 胜博发娱乐平台 )

已经在服务器上装了nginx和php,php-fpm(监听9000端口)
可以正常显示html,但是每当输入url打开一个php时,无法正常解析,导致变成下载模式

nginx.conf如下

现在打开php直接变成404…Orz

干脆贴出来吧,估计是这一段的问题,搞了好久都没进展….

location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
}

这样写试一下 用nginx -t命令检查你的nginx配置文件是否有错误
location /index.php {

    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;

}

我以前也有过,当时是centos6,后来换成7了。
之后绑定好域名就好了

还能显示nginx的画面
问题是我用域名安装源码怎么就显示404
用ip安装弹出php文件的下载,php我也运行了啊。
网站默认主目录我也已经定位到www.38934.tech上面了。
苦恼啊!
2016-10-26 09:33:34
管理员
请您确保以下3个设置:

  1. 域名解析到服务器IP

  2. Nginx网站管理里有配置这个域名

  3. 修改完配置后有重载或重启Nginx
    目前已为你修正配置。

第一步 nginx.conf的配置

location / {
        if (!-e $request_filename) {
             rewrite  ^/(.*)$  /index.php/$1  last;
             break;
        }
    }

    location ~ ^/s-([0-9a-z]+)-(.*) {
        rewrite ^/s-([0-9a-z]+)-(.*) /shtmls/$1/$2 last;
        break;
    }

    location ~ .+\.php($|/) {
        set $script    $uri;
        set $path_info  "/";
        if ($uri ~ "^(.+\.php)(/.+)") {
              set $script     $1;
              set $path_info  $2;
        }

        fastcgi_pass 127.0.0.1:9000;
        include fastcgi_params;
        fastcgi_param PATH_INFO $path_info;
        fastcgi_param SCRIPT_FILENAME  $document_root/$script;
        fastcgi_param SCRIPT_NAME $script;

    }

第二步 sudo vim /etc/php5/fpm/pool.d/www.conf
将 ;listen = /var/run/php5-fpm.sock
改成 listen = 127.0.0.1:9000

你的代码直接放在/root里么?你改过之后的完成配置也发一下吧。

(看完/读完)这篇文章有何感想! 胜博发娱乐平台的分享…

胜博发娱乐如何在自己的项目中实现word在线编辑

( 胜博发娱乐 )

希望能在自己(公司)的项目中实现word在线编辑,感觉无从下手

(不好意思,没说清楚,我补充一下:比如我上传了一份word,然后能在线编辑这个word文件,编辑之后能保存)

谢邀~
富文本编辑器
http://summernote.org/

你可以使用百度的ueditor
http://ueditor.baidu.com/webs…

如果不考虑富文本编辑器的话,硬要实现office系列的在线编辑。

你大概有以下几条路走:
1、只考虑IE,用专有ActiveX插件,实现浏览器里面编辑office文档。https://github.com/stone0090/…
2、现代浏览器,接入在线的office online 。

不要说在线 Word 编辑,就是在线 Word 阅读都已经很不容易了,这个功能太专业了。

网上能搜到一些阅读组件,大部分是收费的,比如永中的高清服务器版本收费大概是80K。

另外,你可以去看看 Open Office 有没有提供相关的组件。Open Office 一直是开源的 Office 解决方案。

(看完/读完)这篇文章有何感想! 胜博发娱乐的分享…

胜博发娱乐平台php中的字符编码

( 胜博发娱乐平台 )

$str1 = "\xe4\xb8\xad";

$str2 = '\xe4\xb8\xad';

$str3 = '中';

能否详细解释一下三者的区别,是否可以相互转化

第一次在segmentfault上回答问题。。

PHP字符串变量,双引号和单引号的意义是不同的

使用双引号时会转义 单引号时不转义
使用双引号时,$xxxx文本会被相应变量的值替换,单引号没有这个效果

Eg.

$abc='123';
echo "$abc"; //这样会输出123
echo '$abc'; //这样会输出$abc
echo "\n"; //这样会输出一个换行符
echo '\n'; //这样会输出\n两个字符(一个斜杠一个n)

回到问题,
“中”这个汉字在UTF-8的16进制编码是0xe4,0xb8,0xad
因此在双引号字符串中,会被转义为 “中” x开头表示这是一个以十六进制表达的字符,就和HTML中&xe4; 一样
单引号字符串中,直接输出xe4xb8xad

如果你的环境编码是在UTF-8下面, str1和str3等价, 如果直接echo, 都会输出”中”, 如果是二进制层面三个字节比较, 也是完全相等, PHP中的字符串就是直接本地编码二进制存储的

如果你的环境编码是非UTF-8(例如GBK), str1基本上是个乱码, str1和str3也不再等价

至于str2, 它无论什么时候都会输出 ‘\xe4\xb8\xad’ (不含引号, 在单引号的字符串中, 只有单引号本身需要转义成\’, 其它情况的\都视为普通字符处理

只解释第一个与第二个的区别,也就是单引号与双引号的区别

双引号:引号内部会被转义
单引号:引号内部不会被转义

$a = 123;

echo "output:$a";//output:123
echo 'output:$a';//output:$a

//下面的示例仅限linux的php-cli
echo "new line\nsecond line";
/*
会换行,输出:
new line
second line
*/

echo 'no new line\n aaa';
/*
不会换行,输出:
no new line\n aaa
*/

\x后跟着十六进制数字的属于转义字符,转义字符只有在双引号"中才起作用。单引号中只有对单引号本身'和反斜杠\的转义有效,其他的都无效。

PHP本身不区分字符编码。也就是说,$str1是一个三字节的字符串,字符串的三个字节分别是(十六进制编码)E4 B8 AD。如果在UTF-8编码中,就是字。其他编码中就不一定了。

$str2则是一个12字节的字符串,就是你输入的那些字符。

$str3则是一个字符串,如果你把文件以UTF-8编码保存,那就和$str1是一样。如果你以GBK保存,那就是两个字节的D6 D0,如果你以BIG5保存,就是A4 A4


不管是UTF-8、GBK还是BIG5,甚至于很多其他的语言编码,都是遵循EUC的,也就是说对于ASCII字符,他们的编码都是一致的,所以无论用哪种编码保存,对PHP的代码工作都不会有影响。但是对于非ASCII字符就有很大的区别。

所以PHP中的非ASCII字符要正常显示,就要保证你的保存编码和输出编码是一致的。如果是输出的是HTML,是通过meta标签或者在HTTP Header中声明编码的。如果不一致,那就会出现乱码了。

(看完/读完)这篇文章有何感想! 胜博发娱乐平台的分享…