定义和用法
strrev() 函数反转字符串。
语法
strrev(string)
参数 描述
string 必需。规定要反转的字符串。
例子
复制代码 代码如下:

输出:
!dlroW olleH

Shell 也有对应的一个函数:
背景:在很多PHP面试上会给一些冒泡排序、或不说是冒泡排序,而说是自己实现一个按顺序排序,其实更高效呢需要更多时间写代码及思考,往往冒泡排序是最容易考察一个人对php也好,c的指针也好的一个驾驭以能力。

         经典的冒泡排序法一直是许多程序沿用的其中一种排序法,话说冒泡排序法在效率上比PHP系统函数sort更高效。本章不讨论性能,所以就不拿它来跟系统性能做对比了。


我写了一个,其原理,就是无论给一个什么样的数组,其输入这个排序函数,就给按数组下标小的值小在前面,而大的给放后面,也就是相当于一个瓶子里的气泡,轻的下沉,重的上浮,这个用语言讲出来还真不太好讲:
1)对于由a[0],a[1],a[2],a[3]....a[n-2],a[n-1],n个数组,通整个数组进行扫描(挨个扫:下标:0,1一组,1,2一组...,一组发现数组下标小的值且大的则交换),一直这样交换下去会发现:
(1)最大的那个经过一次扫描就沉到最下面了。
(2)最下面那个下一次不用再扫一次了,省一次比对。
  (3)根据2,对上面操作再扫一次,则这个倒数第二重的那个气泡也就排好了。
....依次类推,直至最上面两个数是最后一次,也就全排好了。(这个就是外层的一个:i最大,i--,因为内层一次后,最大那个已经到最下面了,于是,i--也就不用再扫它了)
12,45,28,30,88,67
第一次:12,28,30,45,67,88 //左右相邻比对,小下标大数值的往后挪
第二次:12,28,30,45,67,88 //这个其实一次就排好了,有些不规则的不止一次
.....
第N-1次 也就到了0,1两个下标的比对调整下位置,也就算排完了这个冒泡,确保正确。





---------- 调试PHP ----------
冒泡排序学习之PHP版本:Array
(
    [0] => 12
    [1] => 45
    [2] => 28
    [3] => 30
    [4] => 88
    [5] => 67
)
HeloArray
(
    [0] => 12
    [1] => 28
    [2] => 30
    [3] => 45
    [4] => 67
    [5] => 88
)

Output completed (0 sec consumed) - Normal Termination




下面这个是他人写的,感觉是反向,还不是太好理解,姑且放这儿吧:
冒泡排序大概的意思是依次比较相邻的两个数,然后根据大小做出排序,直至最后两位数。由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。但其实在实际过程中也可以根据自己需要反过来用,大树往前放,小数往后放。阅读全文
如果我们想知道某个方法被谁调用了? debug_print_backtrace可以解决
debug_print_backtrace() 可以打印出一个页面的调用过程 , 从哪儿来到哪儿去一目了然.
不过这是一个PHP5的专有函数,好在pear中已经有了实现,

PHP debug_backtrace() 函数生成一个 backtrace。
该函数返回一个关联数组。下面是可能返回的元素:
名称  类型  描述
function  字符串  当前的函数名。
line  整数  当前的行号。
file  字符串  当前的文件名。
class  字符串  当前的类名
object  对象  当前对象。
type  字符串  当前的调用类型,可能的调用:
返回: "->"  - 方法调用
返回: "::"  - 静态方法调用
返回 nothing - 函数调用
args  数组  如果在函数中,列出函数参数。如果在被引用的文件中,列出被引用的文件名。




阅读全文
初略:
array(将=>array(军,来=>array(要=>array(升=>array(级)))),美=>array(人=>array(上,痣),女=>array(陪,聊)))
这种方式可能会高一点,但不利于海量,下面有一个思路,可以参考下。

关键词过滤的程序:
   因为关键词比较多,用preg_replace效率极差,str_replace又不能有太多的关键词,strtr虽然效率比str_replace快四倍,但用于大数组效率却和str_replace比较接近,于是自己用PHP写了一个算法,觉得效率非常很不错,遂于大家分享,待程序完善后便贴出来,先占个位置

主要是思路,
对文章按字节进行遍历,然后对每个字节开始的位置进行递归匹配关键词(当然不是直接去匹配,这里做了一个技巧,是把关键词按字节的ACCSII码做为KEY分成N维数组),这样只遍历文章一次便定位出所有关键字的位置,递归部分不会减慢程序的速度,一般第一次就会被跳出,这样程序不会随关键字的数量而变慢,理论上几十万关键字和几千个个关键字速度差不多 在本机测试了下4万个关键词,替换一篇文章竟然才用0.01秒多,而str_replace 已经到了 0.4秒了,并且关键词数量越多 str_replace  时间越长。

DownLoad:


keyword.class.php 是类
example.php 是例子 和 与 str_replace的对比
badword.src.php 是关键词的文件

也可以参看:http://hi.baidu.com/actfish/item/7fc13be2431a9018585dd837

关于关键字过滤程序中发现的多层循环的改良技巧:
   for循环的嵌套是很悲观的一件事情,多层嵌套时不出错的概率基本上是0(除非你的嵌套非常简单),当你的程序里充满了return,break时,是否头疼了呢?这时候我们常常忽略了C#语言的一个重要关键字“GOTO”。大胆尝试一下吧,虽然平时不鼓励使用GOTO来进行编程的,但有时候,使用它会大大提高你的效率,多层复杂循环就是“有时候”的一个时候。
这一篇文章写得不错,特转载,Url如下:
来自:
http://obmem.info/?p=476
http://obmem.info/?p=753
阅读全文
php -i|grep  magic_quotes_gpc
magic_quotes_gpc => Off => Off

注释:默认情况下,PHP 指令 magic_quotes_gpc 为 on,对所有的 GET、POST 和 COOKIE 数据自动运行 addslashes()。不要对已经被 magic_quotes_gpc 转义过的字符串使用 addslashes(),因为这样会导致双层转义。遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。


php addslashes处理$_POST $_GET数组函数:


调用:

背景:因smarty原自带函数截取时会出现中文乱码(我的是GBK的编码),出现怪异符号。
目的:修改Smarty的变量调节器truncate无乱码截取中文。

正题:
      网站的页面在展现时,为了美观,经常需要对一些标题的长度进行控制。在整个程序中,到处都是那忙碌的字符串截取函数,而且还可能出现中文乱码。用mb_substr()可以比较好的截取中文,但是它把中文和英文都按一个字符处理,截取的效果感觉不是太好。

如果你是用Smarty做表现层的话,可以用smarty的变量调节器truncate方法来控制字符串的长度,当然利用Smarty自己的truncate截取中文时,会出现乱码。我们可以改写它的truncate调节器,让它来帮我们截取字符串,达到一劳永逸的效果。

找到你的Smarty安装目录,打开plugins/modifier.truncate.php文件。你可以用下面的函数替换掉smarty自己的函数。




参数$length:为截取字符串的最大长度,默认为80字符,一个中文按2个字符计算;$etc:截取字符串时,自动附加在后面的符号。默认为 (...);$break_words 本指为是否可以打断一个单词,在中文环境下,作用不大,在改写的方法中,后面两个参数不起什么作用。

最后说下使用,{$title|truncate:30:"..."} ,很简单不是?当然这30个字符的长度还包括(...),如果你不喜欢,可以自己修改上面代码中的一行。
echo -n `date +%Y%m%d%H%M%S`| pbcopy
20220805095854

shell如下:
cat /data/www/up.jackxiang.com/bak.sh

为何要这么干的需求来源@[实践OK]CentOS下sendfile直接下载文件结合PHP的配置,curl -T 上传后下载高效实现方法。
https://jackxiang.com/post/10785/


1206分论坛三预排座次表?打印80份?.pdf




在文件后缀前加上一个日期:




1)shell 去掉文件名后缀的简单方法:

2)shell调试的常用参数:



提取文件名:
${var##*/}


echo $rpm
/root/rpmbuild/RPMS/x86_64/xlswriter-php73-1.3.6-200925115211.el7.centos.x86_64.rpm
echo ${rpm##*/}
xlswriter-php73-1.3.6-200925115211.el7.centos.x86_64.rpm

提取文件后缀:
echo ${rpm##*.}
rpm

提取文件的多个后缀:
echo ${rpm#*.}
3.6-200925115211.el7.centos.x86_64.rpm

提取文件所在目录:
echo ${rpm%/*}
/root/rpmbuild/RPMS/x86_64

右边算起的最后一个'.'字符及其右边的内容
echo ${rpm%%.*}
/root/rpmbuild/RPMS/x86_64/xlswriter-php73-1



${}总结

其实${}并不是专门为提取文件名或目录名的,它的使用是变量的提取和替换等等操作,它可以提取非常多的内容,并不一定是上面五个例子中的'/'或'.'。也就是说,上面的使用方法只是它使用的一个特例。

看到上面的这些命令,可能会让人感到非常难以理解和记忆,其实不然,它们都是有规律的。

#:表示从左边算起第一个

%:表示从右边算起第一个

##:表示从左边算起最后一个

%%:表示从右边算起最后一个

换句话来说,#总是表示左边算起,%总是表示右边算起。

*:表示要删除的内容,对于#和##的情况,它位于指定的字符(例子中的'/'和'.')的左边,表于删除指定字符及其左边的内容;对于%和%%的情况,它位于指定的字符(例子中的'/'和'.')的右边,表示删除指定字符及其右边的内容。这里的'*'的位置不能互换,即不能把*号放在#或##的右边,反之亦然。

例如:${var%%x*}表示找出从右边算起最后一个字符x,并删除字符x及其右边的字符。

看到这里,就可以知道,其实该命令的用途非常广泛,上面只是指针文件名和目录名的命名特性来进行提取的一些特例而已。



更多摘录:
阅读全文
http://www.cnblogs.com/chengmo/archive/2010/09/30/1839632.html

1)shell 分割字符串存至数组



上述代码会输出
one
two
three
four

arr=($a)用于将字符串$a分割到数组$arr ${arr[0]} ${arr[1]} ... 分别存储分割后的数组第1 2 ... 项 ,${arr[@]}存储整个数组。变量$IFS存储着分隔符,这里我们将其设为分号 "," OLD_IFS用于备份默认的分隔符,使用完后将之恢复默认。

2)shell查找某个字符串是否存在的方法:


存在ok值为1,不存在则为0.



${desturlLoopPath}


Shell获取字符串的MD5:
echo -n 'hello'|md5sum|cut -d ' ' -f1
命令解释:
md5sum: 显示或检查 MD5(128-bit) 校验和,若没有文件选项,或者文件处为"-",则从标准输入读取。
echo -n : 不打印换行符。
cut:  cut用来从标准输入或文本文件中剪切列或域。剪切文本可以将之粘贴到一个文本文件。
        -d 指定与空格和tab键不同的域分隔符。-f1 表示第一个域。参考这里。
这是unix的shell编程语句,意思是如果上一条命令执行后的结束代码不是0则执行下面的命令,知道fi行之前,例子:

(一)

需要修改的属性:
multiple="multiple"  height:auto;
修改后如下:
<select style="height:auto;width:260px;" id="sel-install-path"  multiple="multiple" >


一:
<select name="select" size="1" multiple="multiple" id="select">
我想给一个常规的select加上: multiple="multiple" Jquery怎么加?
二:
那个height呢?
<select style="height:auto;width:260px;" id="sel-install-path"  multiple="multiple" >
开始是一个固定高度,我想修改为auto,怎么弄?
"height:auto;
<select style="height:auto;width:260px;" id="sel-install-path"  multiple="multiple" >

方法:


如果想删除这个多选的属性:


如何获取这个多选是不是真的多选?

判断时的Js:
multiple换成disabled:

对这个多选的Js的Jquery的操作示例:

返回:
[ "/tmp/projectOne", "/tmp/projectTwo"]

(二)jquery 如何修改<a>标签的内容
<a href="javascript:void(0);" onClick="mutiPathBuShuChoose();" id="mutiPathBuShuChooseHref">多目标</a>
$("a#mutiPathBuShuChooseHref").html("单目标");


整体示例:
Html:

editor是全局:



获取富文本编辑器获取内容:
on this host the function 'date("g")' don't work properly. Now, the function should return 13, but return 7. It has a delay of 6 hours.

Someone can help me?


It probably gets the server timezone, GMT -8
Would setting time zone work in one of your global configuration files?
For example setting time zone to Brisbane, Australia
PHP Code:
http://www.cnblogs.com/in-loading/archive/2012/04/11/2442697.html

http://code.google.com/p/phpquery
发现已经有人做的相当完备了
http://stackoverflow.com/questions/260605/php-css-selector-library
----------------------------------------------------------------------------------------------
JQuery是一个非常著名的JS框架,提供了对DOM文档的完整操作。这个文档处理利器现在终于有了PHP版,也就是说可以使用php操作 HTML或者XML文档,遍历文档的节点,很轻松的取出,填充节点内容。或者简单来说,除了js的事件响应部分,其余的几乎都可以用php来实现。php 对数据处理的能力显然要比JS强大很多,对不熟悉JS的同学来说,phpQuery是个非常强大的帮手。如果了解了phpQuery,那么就很容易理解其 实phpQuery也可以取代一部分Smarty的功能。

我刚刚开始学习使用phpQuery,这应该算一篇学习笔记,我会努力将其向手册风格靠拢,不过不会做成中文手册,仍然会加入我在使用过程中遇到的问题以及解决方案。

开始phpQuery
参考资料:phpQuery JQuery

phpQuery从编程思想到语言风格都是参照JQuery来做的,所以熟悉JQuery的人可以随时对照参考JQuery手册,方便理解。

phpQuery应用举例:

require(’phpQuery/phpQuery.php’);
$file = file_get_contents(”test_phpQuery.html”);
$dom = phpQuery::newDocument($file);  //初始化对象

echo pq(”head > title”)->text(); //输出文档title

pq这个全局函数类似于JQuery中的$()符号,用于执行请求,或者遍历DOM节点。
例子中的”head > title”就是一个选择请求,选择head标签下的title子标签。

pq(”li”); //选择所有文档中的li标签
foreach(pq(”li”) as $item)
=======================================================================
这篇文章主要介绍了phpQuery让php处理html代码像jQuery一样方便,需要的朋友可以参考下

简介
如何在php中方便地解析html代码,估计是每个phper都会遇到的问题。用phpQuery就可以让php处理html代码像jQuery一样方便。
项目地址:https://code.google.com/p/phpquery/
github地址:https://github.com/TobiaszCudnik/phpquery
DEMO
下载库文件:https://code.google.com/p/phpquery/downloads/list
我下的是onefile版:phpQuery-0.9.5.386-onefile.zip
官方demo:https://code.google.com/p/phpquery/source/browse/branches/dev/demo.php
然后在项目中引用。
html文件test.html:


上面的代码中包含了取属性和innerText内容(通过nodeValue取)。
输出:

复制代码代码如下:

array (size=3)
  'name' =>
    array (size=2)
      0 => string 'Spiderman City Drive' (length=20)
      1 => string 'Spiderman - City Raid' (length=21)
  'href' =>
    array (size=2)
      0 => string 'http://www.gahe.com/Spiderman-City-Drive' (length=40)
      1 => string 'http://www.gahe.com/Spiderman-City-Raid' (length=39)
  'img' =>
    array (size=2)
      0 => string 'http://www.gahe.com/thumb/12/Spiderman-City-Drive.jpg' (length=53)
      1 => string 'http://www.gahe.com/thumb/12/Spiderman-City-Raid.jpg' (length=52)

强大的是pq选择器,语法类似jQuery,很方便。
来自:http://www.aspku.com/kaifa/php/46348.html

更多参考:
http://www.cnblogs.com/rmbteam/archive/2011/11/05/2236986.html
实践示例:http://querylist.cc/article/9



日常应用中,我们经常会在php里面用到基于文件系统直接输出一个文件的方法,例如:阅读全文
想对Php代码作跳转,其实有一个叫openctags的插件生成一个openctags.tags的,可以用在Editplust里,跳转还不错。
我在Linux的生产环境下,执行:

如果是openctags则直接也可以在vim里命令行设定:

找到了 ctags 中文手册:
    使用 ctags 命令生成 tags 文件 (我生成了 VS 的整个 Solution)
    使用 vi 能够找到生成的 tags 文件(修改 _vimrc 文件,增加 set tags=文件完整路径,就可以找到生成的文件了)
    使用 CTRL + ] 或 CTRL + T 就可以跳转了(可以在方法间跳转,无法转到变量的定义处)
    这一篇文章还以为是一个真正的比较,后来加了一个Url:Swoole-真正的PHP Web开发框架,大概了解了一下,感觉还是不错的,这个框架的思想以实用,借鉴,不落后,不争先,集成事件,服务等。。。阅读全文
分页: 21/26 第一页 上页 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 下页 最后页 [ 显示模式: 摘要 | 列表 ]