胜博发游戏官网php正则表达式匹配一段中文,中间有换行,空白,应该怎么写?

( 胜博发游戏官网 )

1、举个例子:

<div class="con">
    <p>
        小学生手册:<br />
        1、好好学习;<br />
        2、天天向上;<br />
    </p>
</div>

要把中间p标签中的内容抓出来,正则表达式应该怎么写?

$tmp = '<div class="con">
    <p>
        小学生手册:<br />
        1、好好学习;<br />
        2、天天向上;<br />
    </p>
</div>';

preg_match('/<p>(.*?)<\/p>/s', $tmp, $ret);

echo $ret[1];

请参看 PCRE_MULTILINE 模式修饰符 m
http://php.net/manual/zh/reference.pcre.pattern.modifiers.php

(看完/读完)这篇文章有何感想! 胜博发游戏官网的分享…

SBF胜博发娱乐老虎机ajax返回值中,在首位会出现一些莫名其妙的空行

( SBF胜博发娱乐老虎机 )

我使用的是wordpress,不知道为什么返回的时候会有一些空行出现。

Jquery

$.ajax({
        type:'post',
        url:localcurrent.ajax_url,
        data:favorite_data,
        success:function(response){
            alert(response);
        }
    });

PHP

function favorite_post(){
    $post_id = $_POST["post_id"];
    $user_id = get_current_user_id();
    $favorite = favorite_get($post_id,1);
    //  判断用户是否已经收藏该文章
    if(!in_array($user_id, $favorite)){
        //  用户未收藏此项,要添加收藏
        favorite_add($user_id,$post_id);
        echo 'add';
        exit;
    }else{
        //  用户已收藏此项,要移除收藏
        favorite_del($user_id,$post_id);
        echo 'remove';
        exit;
    }
    echo 'error';
    exit;
}
add_action('wp_ajax_favorite_post', 'favorite_post');

我觉得有两种情况:
1、就是楼上说的,PHP 模板里面的一些东西。
2、返回的数据带BOM 的utf-8格式的文本,也会出现这种情况。

是不是php的模板文件顶部的 删除了php标签啥的? 我之前也是这样 ,排查了好久,后来才发现是我删除了模板文件顶部的一些东西

用浏览器抓包看看

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

胜博发游戏官网微信公众平台 多客服 客户如何主动更换客服

( 胜博发游戏官网 )

微信公众号中有几个客服列表,刚开始客户选择客服1,聊了几分钟后,客户想主动更换成客服2.请问这样该如何操作。
貌似微信第一次选择客服后就不在去开发者的代码逻辑中判断了,直接从微信的服务器发送信息到相应的客服客户端。

(看完/读完)这篇文章有何感想! 胜博发游戏官网的分享…

SBF胜博发娱乐老虎机Mysql如何实现在插入数据时更新其中一个字段?

( SBF胜博发娱乐老虎机 )

我的sql语句如图,如何在insert的时候更新其中的project_id字段呢?

直接给你个例子,相信你能看懂,
insert into users (id,username,password) select null,username,'3333' from users where id=1

ON DUPLICATE KEY UPDATE 语法,这个要配合唯一索引使用

先插入insert 如果成功则 返回自增ID,再执行update 这样可以啊,执行2条SQL就行

这是要写触发器么。。。

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

sbf胜博发娱乐城任务系统统计每个员工所占用任务的比例

( sbf胜博发娱乐城 )

自己搭建了一个任务系统 现在需要做一个 领导分配任务后在任务过程中能查看员工所占任务比例。目前的一个思路 使用 Google chart类 ,谁有比较简单快捷的方法呢!

直接显示百分比岂不是更快更好?
如果想要图形化,直接用excel嘛~

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

胜博发游戏官网php爬虫拿到ajax请求地址应该放在哪里执行?

( 胜博发游戏官网 )

用的phpcrawl框架,
第1步是设置开始地址;
第2步是设置要下载的内容类型:text/html;
第3步是用正则表达式设置要扩展的url规则;
第4步就是开始抓取,抓取符合第3步url规则的网址的内容。
第5步是用正则表达式或dom解析工具解析自己需要的内容。

问题是:
有些内容是ajax请求,请求地址是javascript写的,已经拼接好了。那么,这个地址应该怎么样才可以让这个爬虫去执行?放在第3步的扩展地址不行,因为是自己拼接的,源代码中没有这个地址,匹配不到。

直接使用拼接后的地址,然后查看该AJAX是GET还是POST请求,设置好参数后再做一次curl请求,然后再解析数据。

(看完/读完)这篇文章有何感想! 胜博发游戏官网的分享…

sbf胜博发娱乐城php怎么将二维数组键名相同的元素转为新的数组?不用for,foreach循环

( sbf胜博发娱乐城 )

如图所示是一个二维数组[别纠结,为了方便我将其转为了json], 其中type只有两个值1和2,
现在需要将type=1的元素转到$new数组中,type=2的转到$old数组中。

除了用循环还有什么方法没?

附上json:

[{"id":"10","type":"1","cpu":"Intel Xeon E3-1241v3","cores":"4","ram":"16","hard_drive":"1TB SATA","port_speed":"100Mbps","transfer":"20TB","ipmi_kvm":"Y","price":"148","price1":"142","price2":"135","price3":"127","price4":"118","add_time":"0000-00-00 00:00:00","edit_time":"0000-00-00 00:00:00","ip":null},{"id":"11","type":"1","cpu":"Intel Xeon E5-1650v2","cores":"6","ram":"16","hard_drive":"1TB SATA","port_speed":"100Mbps","transfer":"20TB","ipmi_kvm":"Y","price":"198","price1":"190","price2":"180","price3":"170","price4":"158","add_time":"0000-00-00 00:00:00","edit_time":"0000-00-00 00:00:00","ip":null},{"id":"12","type":"1","cpu":"Dual Intel Xeon E5-2630v2","cores":"12","ram":"64","hard_drive":"1TB SATA","port_speed":"100Mbps","transfer":"20TB","ipmi_kvm":"Y","price":"348","price1":"334","price2":"317","price3":"299","price4":"278","add_time":"0000-00-00 00:00:00","edit_time":"0000-00-00 00:00:00","ip":null},{"id":"4","type":"2","cpu":"Intel Core i3-2100T","cores":"2","ram":"16","hard_drive":"1TB SATA","port_speed":"100Mbps","transfer":"20TB","ipmi_kvm":"Y","price":"68","price1":"65","price2":"61","price3":"56","price4":"51","add_time":"2015-09-16 16:36:39","edit_time":"2015-09-16 16:36:42","ip":"127.0.0.1"},{"id":"5","type":"2","cpu":"Intel Xeon X3470","cores":"4","ram":"16","hard_drive":"1TB SATA","port_speed":"100Mbps","transfer":"20TB","ipmi_kvm":"Y","price":"78","price1":"75","price2":"70","price3":"65","price4":"59","add_time":"2015-09-16 16:37:24","edit_time":"2015-09-16 16:37:27","ip":"127.0.0.1"},{"id":"6","type":"2","cpu":"Intel Core i5-2400","cores":"4","ram":"16","hard_drive":"1TB SATA","port_speed":"100Mbps","transfer":"20TB","ipmi_kvm":"Y","price":"88","price1":"84","price2":"79","price3":"73","price4":"66","add_time":"2015-09-16 16:38:14","edit_time":"2015-09-16 16:38:16","ip":"127.0.0.1"},{"id":"7","type":"2","cpu":"Intel Core i7-2600","cores":"4","ram":"16","hard_drive":"1TB SATA","port_speed":"100Mbps","transfer":"20TB","ipmi_kvm":"Y","price":"98","price1":"94","price2":"88","price3":"81","price4":"74","add_time":"2015-09-16 16:40:02","edit_time":"2015-09-16 16:40:04","ip":"127.0.0.1"},{"id":"8","type":"2","cpu":"Intel Core i7-3770S","cores":"4","ram":"16","hard_drive":"1TB SATA","port_speed":"100Mbps","transfer":"20TB","ipmi_kvm":"Y","price":"118","price1":"113","price2":"106","price3":"98","price4":"89","add_time":"2015-09-16 16:40:50","edit_time":"2015-09-16 16:40:52","ip":"127.0.0.1"},{"id":"9","type":"2","cpu":"Dual Intel Xeon X5650","cores":"12","ram":"64","hard_drive":"1TB SATA","port_speed":"100Mbps","transfer":"20TB","ipmi_kvm":"Y","price":"318","price1":"305","price2":"286","price3":"264","price4":"239","add_time":"2015-09-16 16:42:00","edit_time":"2015-09-16 16:42:02","ip":"127.0.0.1"}]

/*
 * 好吧。不知道是不是你需要的。还有想说一句,有这个必要吗?
 * */
$b =
    array(
        array('type' => 1, 'name' => 'lisi'),
        array('type' => 2, 'name' => 'lisi'),
        array('type' => 1, 'name' => 'lisi'),
        array('type' => 1, 'name' => 'lisi'),
    );

$newArray = array();

print_r(array_filter($b,'filtertype'));

echo '<br>';

print_r(array_filter($b,'filtertypetwo'));

function filtertype($var)
{
    return $var['type'] ==1;
}

function filtertypetwo($var)
{
    return $var['type'] ==2;
}

array_column — 返回数组中指定的一列 (注意版本要求。PHP 5 >= 5.5.0)

<?php
 $records  = array(
    array(
         'id'  =>  2135 ,
         'first_name'  =>  'John' ,
         'last_name'  =>  'Doe' ,
    ),
    array(
         'id'  =>  3245 ,
         'first_name'  =>  'Sally' ,
         'last_name'  =>  'Smith' ,
    ),
    array(
         'id'  =>  5342 ,
         'first_name'  =>  'Jane' ,
         'last_name'  =>  'Jones' ,
    ),
    array(
         'id'  =>  5623 ,
         'first_name'  =>  'Peter' ,
         'last_name'  =>  'Doe' ,
    )
);
 
 $first_names  =  array_column ( $records ,  'first_name' );
 print_r ( $first_names );
 ?>   

以上例程会输出:

Array
(
    [0] => John
    [1] => Sally
    [2] => Jane
    [3] => Peter
)

除了不循环,我想不到别的法子,关注一下,等高人回答。

array_map(function($v){
    if($v['type'] == 1){
        $GLOBALS['new'][] = $v;
    }else if($v['type'] == 2){
        $GLOBALS['old'][] = $v;
    } 
}, json_decode($json, true));

$arr = [];//给的数组
$result = array_map(function($v){
    if($v['type'] == 1) return $v;
},$arr);
var_dump($result);

$gang = array(
    array('id'=>1,'term_id'=>2,'name'=>'哈哈'),
    array('id'=>2,'term_id'=>1,'name'=>'嘻嘻'),
    array('id'=>1,'term_id'=>2,'name'=>'哈哈'),
    array('id'=>1,'term_id'=>3,'name'=>'哈哈'),
    array('id'=>1,'term_id'=>1,'name'=>'哈哈'),
    array('id'=>1,'term_id'=>4,'name'=>'哈哈'),
    array('id'=>1,'term_id'=>3,'name'=>'哈哈'),
    array('id'=>1,'term_id'=>2,'name'=>'哈哈'),
);
foreach ($gang as $vo) {
    $haha[$vo['term_id']][] = $vo;
}
var_dump($haha);
$data = array();
$a = array_map(function($v){ $GLOBALS['data'][$v['term_id']][] = $v;return $v;},$gang);
var_dump($GLOBALS['data']);

闭包中使用GLOBALS即可

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

sbf胜博发娱乐城Yii2框架中,有必要再分离service层么?

( sbf胜博发娱乐城 )

目前的项目中,service层,就是使用静态方法调用,方法内再实例化ar model

而Yii2自动生成的模板中,是直接在model中使用ar model。

两者没有多大的区别,那分离出service层的意义是什么?

在简单的系统里面,分层是这样的

controller <-> model <-> storage(sql、nosql、cache)

所有的业务逻辑都在model上

现在讨论一个常见的场景,用户下订单要买点东西,这个业务逻辑涉及到的model类有User(用户)、Order(订单)、Goods(商品)

那么下订单这个事情是放到User还是Order上?无论放在User还是Order上,这个业务逻辑都需要多个model类的参与

这种需求在系统里面越来越多,你就会发现你总有那么几个model在不断的膨胀,这些model之间甚至产生了网状的相互依赖关系

需求越复杂,你越容易陷入这种混乱的局面

service层的作用就是把这些需要多个model参与的复杂业务逻辑单独封装出来,这些model之间不再发生直接的依赖,而是在service层内协同完成逻辑

service层的第一个目的其实就是对model层进行解耦

业界对前面提到的那种不断膨胀的model称为“充血模型”,起初对充血模型进行反思的一种解决方案就是“贫血模型”,model里面尽量少放点逻辑,把这些逻辑都移动到controller层面去处理,在controller里面调用多个model完成业务逻辑,也达到了对model间解耦的作用

但问题就是,业务逻辑都放到controller层面了,如果其它的controller也需要相同的业务逻辑时,只能在controller里面调用其它的controller,这样做既不方便又麻烦

所以后来还是把这种解耦单独放一层,叫service,现在分层就变成这样

controller <-> service <-> model <-> storage

service层的第二个作用就是重用

差不多就是这样

简单粗暴的总结来说,如果你的某个业务逻辑,需要用到多个model,就放到service层里面去,如果只是这个model自己的事,跟其它的model没有任何关系,就放到model里面就好。

如果你的系统本来就很小,业务逻辑也超级简单,也不存在长期演进迭代的需求,随你怎么高兴怎么写都行。

取决于model层是否够乱

该不该分离出新的层,有无service层都有各自的好处,没有优劣

乱了才拆,不乱不管,就看合适不合适

如果真的很乱,非拆分不可,想必题主也不会再提问,所以推测现在是刚开始乱

如果真是这样,其实这就是开始了,推荐现在就拆

分层永远是处理复杂业务的有效手段(一般项目三层,复杂的项目回到四层、五层)。

在面向OO的系统里,service就是biz manager,在面向过程的系统里service就是TS脚本。

AR Model里面当然可以放业务代码,但仅限于操作这个model自身(如果使用了repository则也不能操作同类型别的model,而应该在repository中操作某一类models),不对其他类型model产生依赖。

业务manager(也就是所谓的service)则根据业务,处理不同类型model或者repository之间的关系。

业务更加复杂时可以抽出子系统的facade门面,处理不同业务manager调用顺序。

最后在controller里调用它们(对, controller也可以认为是一个facade)。

我接触过的项目都在这几层里面,再复杂也就到facade。小项目当然直接扔到model里,,随着业务不断复杂,我们要做的只是不断重构而已。

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

SBF胜博发娱乐老虎机lavarel php aritisan migrate报错

( SBF胜博发娱乐老虎机 )

PHP Notice:  Use of undefined constant MCRYPT_RIJNDAEL_128 - assumed 'MCRYPT_RIJNDAEL_128' in /var/www/billstatistics/config/app.php on line 83

Notice: Use of undefined constant MCRYPT_RIJNDAEL_128 - assumed 'MCRYPT_RIJNDAEL_128' in /var/www/billstatistics/config/app.php on line 83


                         
  [PDOException]         
  could not find driver  
                    
                    
                    

local.ERROR: exception ‘PDOException’ with message ‘could not find driver’

什么原因,我看了php扩展有pdo_mysql

这样报错90%是没有正确加载pdo啊,不用怀疑系统给你的报错。

注:命令行和服务器的php扩展加载是不一样的

第二,敢问题主用的laravel版本是?

第三,貌似你的laravel还需要MCRYPT的支持?

以后有什么laravel相关的问题,可以到这里laravist来交流一下,我会尽力帮你解决

sudo apt-get install php5-mcrypt
sudo php5enmod mcrypt

//php.ini
extension=mcrypt.so

sudo service apache2 restart

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

SBF胜博发娱乐老虎机微信支付native方式没有收到异步通知

( SBF胜博发娱乐老虎机 )

请教一个问题,就是微信支付的PHP SDK
我想在网页中扫描微信二维码支付,下载了官方的SDK
运行了example 中的native.php
通过模式二来扫码支付

$input->SetNotify_url("http://127.0.0.1/wxpay/example/notify.php”);

但是我发现支付成功了,可是微信没有向我设置的notify发异步请求,请问该如何解决,还是我的逻辑错误?

兄弟,微信支付回调地址必须是公网可访问的地址,是微信支付的服务器访问不到你的本地环境地址。

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

sbf胜博发娱乐城有没有人使用过Requests for PHP?

( sbf胜博发娱乐城 )

POST http://10.18.32.78/nps/login.action HTTP/1.1
Host: 10.18.32.78
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://10.18.32.78/nps/login_view.action;jsessionid=9DC8C0E7A12FF26279DB8123088C6DC6
Cookie: JSESSIONID=9DC8C0E7A12FF26279DB8123088C6DC6
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 34

userName=092312123&password=123456

上面是用fiddler抓到的
下面是我的代码

require './Requests-1.6.0/library/Requests.php';
Requests::register_autoloader();

$url = 'http://10.18.32.78/nps/login.action';
$headers = array(
    'Host' => '10.18.32.78',
    'User-Agent' => 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0',
    'Accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language' => 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
    'Accept-Encoding' => 'gzip, deflate',
    'Referer' => 'http://10.18.32.78/nps/login_view.action;jsessionid=9DC8C0E7A12FF26279DB8123088C6DC6',
    'Cookie' => 'JSESSIONID=9DC8C0E7A12FF26279DB8123088C6DC6',
    'Connection' => 'keep-alive',
    'Content-Type' => 'application/x-www-form-urlencoded',
    'Content-Length' => '34'
);

//var_dump($headers);
$options = array();
$data = array(
    ''=>'userName=092312123&password=123456'
);

// Now let's make a request!
$request = Requests::post($url, $headers, $data);

下面是运行的结果

string '
<html>
<head>
    <title>东软睿道睿鼎教学实训平台 - </title>
    <link href="/nps/css/default.css" rel="stylesheet" type="text/css">
    <script language="javascript" src="/nps/js/jquery.js"></script>
    <script language="javascript" src="/nps/js/jquery.selectboxes.js"></script>
    <script language="javascript" src="/nps/js/common.js"></script>
    <script language="javascript" src="/nps/js/init.js"></script>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
    
</head>
<body >
<s'... (length=2212)

请问为什么显示的不全呢

这咋就显示不全呢? 直接echo 不要var_dump

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

SBF胜博发娱乐老虎机php抓取页面后,有什么好的方式解析dom提取数据?

( SBF胜博发娱乐老虎机 )

php抓取页面后,有什么好的方式解析dom提取数据?

phpQuery

让php处理html代码像jQuery一样方便

xpath

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

胜博发游戏官网开发一个简单的PHP框架,有哪些安全问题需要注意?

( 胜博发游戏官网 )

自认为,做一个最简单的PHP mvc框架,用URL路由函数匹配URL中的controller和method的名字,如果method_exists则new该controller再用call_user_func_array执行该method,否则引入error的controller,每个controller中可以require引入model,再require引入tpl,这是我做一个最简单的PHP框架的思路,那这里面需要注意哪些安全问题呢?

  • 路径问题,不能通过url调用应用外部文件比如/etc/passwd

  • 数据过滤,永远不要信任用户的任何输入。输入的所有数据使用htmlspecialchars过滤后入库。

  • 数据库,使用PDO代替mysql_xxxx,使用参数绑定处理外部数据(如果数据库只使用mysql也可使用mysqli扩展)

关于 call_user_func_array 的安全问题,之前drupal中过招。

http://blog.knownsec.com/2014/10/drupal__callback_nightmare/

require 可能产生文件包含漏洞。

http://www.neatstudio.com/show-1123-1.shtml

(看完/读完)这篇文章有何感想! 胜博发游戏官网的分享…

胜博发游戏官网php爬虫ajax请求地址怎么获取?

( 胜博发游戏官网 )

用php爬虫抓取网页,网页上有个信息需要登录后才显示在页面中,是一个ajax请求的信息。按F12找到了这个ajax请求地址,javascript生成的,那么,如何获取这个地址呢?

补充:
ajax请求的jquery代码:

$(document).ready(function(){
    var id="100";
    var tsTimeStamp= new Date().getTime();
    $.get("http://www.xxxx.com/extra/ajax_contact.php", { "id": id,"time":tsTimeStamp,"act":"locations_contact"},
        function (data,textStatus)
         {            
            $("#locations_contact").html(data);
         }
    );
})

按F12在那个框里面显示的ajax请求地址:ajax_contact.php?id=100&time=1442484035051&act=locations_contact
把上面这个地址在新窗口打开显示的完整地址:http://www.xxxx.com/extra/ajax_contact.php?id=100&time=1442484035051&act=locations_contact

每个页面id不一样,怎么把这个地址取到?

分析js, 找js是怎么拼这个地址的, 用的哪些变量, 这个变量的值又是哪里来的,然后自己组装.


<?php

$html = '';//这里为抓到的HTML内容

preg_match('/var id="(\d+)";/', $html, $result);//匹配出来 id的值,

//接下来你就可以用取到的id(保存在变量 $result 中), 接到你抓到的那个URL中发请求了.

(看完/读完)这篇文章有何感想! 胜博发游戏官网的分享…

sbf胜博发娱乐城php中的字符编码

( sbf胜博发娱乐城 )

$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中声明编码的。如果不一致,那就会出现乱码了。

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

胜博发游戏官网如何在自己的项目中实现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 解决方案。

(看完/读完)这篇文章有何感想! 胜博发游戏官网的分享…

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

( sbf胜博发娱乐城 )

已经在服务器上装了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里么?你改过之后的完成配置也发一下吧。

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

胜博发游戏官网有没有复杂度为O(n)的二维数组合并去重算法

( 胜博发游戏官网 )

有没有复杂度为O(n)的二维数组合并去重算法

$a = [
    ['id'=>1],
    ['id'=>2],
    ['id'=>3],
    ['id'=>4],
    ['id'=>5],
    ['id'=>6]
];
$b = [
    ['id'=>5],
    ['id'=>6],
    ['id'=>7],
];
$c = [
    ['id'=>8],
    ['id'=>9]
];

function array_unique_merge() {
    $params = func_get_args();
    $result = [];
    $hashmap = [];
    $arr_count = count($params);
    for($i = 0; $i<$arr_count; $i++) {
        foreach($params[$i] as $key => $val) {
            $md5 = md5(json_encode($val));
            if (!isset($hashmap[$md5])) {
                $hashmap[$md5] = true;
                $result[] = $val;
            }
        }
    }
    return $result;
}

print_r(array_unique_merge($a, $b, $c));

我只是贴出来一下我的想法可以这么做。如果n指的是所有数组的元素数量之和。

这个必须要用2循环,对n的定义应该是多个关联数组的元素之和,双循环就算是O(n)了

serialize以后当作hash比较,这个思路呢?手机我就不写代码了…

(看完/读完)这篇文章有何感想! 胜博发游戏官网的分享…