设为首页 收藏本站
查看: 348|回复: 0

[经验分享] Php学习《五》 ------ 基本知识摘录

[复制链接]

尚未签到

发表于 2017-3-28 14:39:32 | 显示全部楼层 |阅读模式
1.php中文字符串长度及定长截取问题

使用str_len("中国") 结果为6,php系统默认一个中文字符长度为3,可改用mb_strlen函数获得长度,mb_substr函数截取字符

mb_strlen($str, "utf-8"); //1汉字为1字符
mb_strlen($str, "gb2312"); //系统会认为1汉字为2字符
mb_strlen($str); //如果没有添加,系统会认为1汉字为3字符

int mb_strlen ( string str [, string encoding] )

string mb_substr ( string str, int start [, int length [, string encoding]] )

2.判断php变量是否定义,是否为空

if($keyword):   这样的语句如果在controller里没有set 到页面上判断语句会出错,改用表达式 isset($keyword)

表达式 gettype()  empty()  is_null()  isset()  boolean : if($x)
$x = "";  string  TRUE  FALSE  TRUE  FALSE
$x = null;  NULL  TRUE  TRUE  FALSE  FALSE
var $x;  NULL  TRUE  TRUE  FALSE  FALSE
$x is undefined NULL  TRUE  TRUE  FALSE  FALSE
$x = array();  array  TRUE  FALSE  TRUE  FALSE
$x = false;  boolean  TRUE  FALSE  TRUE  FALSE
$x = true;  boolean  FALSE  FALSE  TRUE  TRUE
$x = 1;  integer  FALSE  FALSE  TRUE  TRUE
$x = 42;  integer  FALSE  FALSE  TRUE  TRUE
$x = 0;  integer  TRUE  FALSE  TRUE  FALSE

3.获取request多值参数

类似java的request.getParameterValues()  (居然刚知道这个方法,==!)

页面form中   

   <input type="hidden" name="kword[]" value="2"/>
     <input type="hidden" name="kword[]" value="7"/>
    <input type="hidden" name="kword[]" value="895"/>

后台处理请求

$kword=$_POST['kword'];

cakePHP对应方法为

$kword=$this->params['form']['kword'];

使用时按照设置的顺序$kword[index]    index: 0-n

4.php solr client api 取doc字段出现index not defined 错误解决方法:

solr文档可能某些字段不全,当取多个文档显示时,如果有的字段没有定义值会出现index not defined  错误

修改solr client api的Document文件

public function __get($key) {  
//key不存在则返回空 避免出现index not defined 错误 shen guanpu 2010年7月15日13:51:52  
return array_key_exists($key,$this->_fields)?$this->_fields[$key]:"";  
//return $this->_fields[$key]; 原代码}

5. Install CakePHP in a Subdirectory Via an Apache Alias
httpd.conf

In httpd.conf, add the following line:Alias /directory_name /absolute/path/to/install/directory/app/webroot
.htaccess

In app/webroot/.htaccess, add the following line:RewriteBase /directory_name
Your .htaccess file should now appear as such:

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /directory_name
  RewriteCond % REQUEST_FILENAME !-d
  RewriteCond % REQUEST_FILENAME !-f
  RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>
index.php

Finally, in app/webroot/index.php, at line 63, right below where it says not to edit below this line, change it to: define('WEBROOT_DIR', 'directory_name');
出处
http://www.chriscassell.net/log/2006/07/27/how_to_install_.html

6. mysql 远程访问设置

GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY 'password'  WITH GRANT OPTION;

FLUSH PRIVILEGES;

7.PHP 闭合标签


PHP闭合标签“?>”在PHP中对PHP的分析器是可选的。 但是,如果使用闭合标签,任何由开发者,用户,或者FTP应用程序插入闭合标签后面的空格都有可能会引起多余的输出、php错误、之后的输出无法显示、空白页。因此,所有的php文件应该省略这个php闭合标签,并插入一段注释来标明这是文件的底部并定位这个文件在这个应用的相对路径。这样有利于你确定这个文件已经结束而不是被删节的。

INCORRECT: <?php echo "Here's my code!"; ?>

CORRECT: <?php echo "Here's my code!";

/* End of file myfile.php // Location: ./system/modules/mymodule/myfile.php */

8.php判断数字

bool is_numeric ( mixed var )

9.mysql IGNORE_SPACE mode

写concat函数时出现 concat dose not exist错误

更改set sql_mode='IGNORE_SPACE'; 再写concat得到正确结果

mysql workbench字体太小,函数和“(”之间有空格居然没看到。。。

10.php solr 搜索排序

$response = $this->searchSolr->search( $query, $offset, $limit,array('sort'=>'wiki-recommend desc,wiki-score desc') );

11.字符编码转换

string mb_convert_encoding ( string str, string to_encoding [, mixed from_encoding] )

12. cakePHP之XP下apache配置

php.ini文件设置 date.timezone = HongKong  不然cakePHP首页会出现警告

apache httpd.conf配置主要是设置php支持及urlrewrite模块启动

LoadModule php5_module C:/php/php5apache2_2.dll

AddType application/x-httpd-php .php
PHPIniDir "C:/php"

#使用cake php 则去掉下行的注释
LoadModule rewrite_module modules/mod_rewrite.so

<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

# 配置默认的目录设置 是否允许跳转.
#
<Directory />
    Options FollowSymLinks
    AllowOverride all
#    Order deny,allow
#    Deny from all
</Directory>

# This should be changed to whatever you set DocumentRoot to.
#这个目录的配置同上做更改
<Directory "C:\Apache2.2\htdocs">
   
13.二维数组赋值

$a1 = array( "a" => 0, "b" => 1 );
$a2 = array( "aa" => 00, "bb" => 11 );
$together = array( $a1, $a2 );
foreach( $together as $single ) {
   $single["c" ] = 3 ;
}

这样赋值不会有任何变化,必须如下做法:

foreach( $together as $key => $value ) {
   $together[$key]["c"] = 3 ;
}

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-356633-1-1.html 上篇帖子: (官方文档)php的gdb调试 下篇帖子: PHP 的 HTTP Basic 认证机制
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表