***php解析html类库simple_html_dom

下载地址:https://github.com/samacs/simple_html_dom一直以来使用php解析html文档树都是一个难题。SimpleHTMLDOMparser 帮我们很好地解决了这个问题。可以通过这个php类来解析html文档,对其中的html元素进行操作(PHP5+以上版本)。解析器不仅仅只是帮助我们验证html文档;更能解析不符合W3C标准的html文档。它使用了类似jQuery的元素选择器,通过元素的id,class,tag等等来查找定位;同时还提供添加、删除、修改文档树的功能。当然,这样一款强大的htmlDom解析器也不是尽善尽美;在使用的过程中需要十分小心内存消耗的情况。不过,不要担心;本文中,笔者在最后会为各位介绍如何避免消耗过多的内存。开始使用上传类文件以后,有三种方式调用这个类:从url中加载html文档从字符串中加载html文档从文件中加载html文档<?php//新建一个Dom实例$html=newsimple_html_dom();//从url中加载$html->load_file('http://www.cnphp.i...

PHP字符串中的变量解析(+教你如何在PHP字符串中加入变量)

定义字符串的时候,用单引号或者双引号都是可以的。我个人习惯是用双引号。在输出字符串的时候,若字符串中含有字符串变量,使用单引号和双引号则是有区别的。如下面程序:12345678<?php$website = "NowaMagic";$name = 'Gonn'; echo 'Welcometovisit$website.Mynameis$name.';echo '<br>';echo "Welcometovisit$website.Mynameis$name.";?>程序输出:Welcometovisit$website.Mynameis$name.WelcometovisitNowaMagic.MynameisGonn.用单引号括住的输出,并没有解析字符串变量,而使用双引号括住的输出,则解析了变量了,输出变量的值。效率问题普遍认为,在不需要变量解析的字符串输出,用单引号速度可能会快一些。顺便说一句,对于不需要变量替换的纯字符串,大家都知道,因为在C/C++中,双引号才表示字符串,所...

**【ci框架】PHP的CI框架集成Smarty的最佳方式

因为CI自带的模板功能不是很方便,所以大家普遍采用集成Smarty的方式来弥补CI这方面的不足。本人在网上看了不少CI集成Smarty的教程,包括咱们CI论坛里面的一个精华帖子http://codeigniter.org.cn/forums/forum.php?mod=viewthread&tid=10345。自己对比了一下这些教程,我认为下面这个方案是所有里面最优秀的,强烈推荐给大家(当然也是我自己采取的方案)出处:http://www.cnmiss.cn/?p=261原文里面的一些错误,我在本文里面已经做了修正-----------------------------------------------------------------------------------------------------------------------------------------------------下面说下我认为它更加优秀的原因,对比下这个方案和我们论坛的方案,你会发现,这个方案多了一点就是它扩展了核心类,它将Smarty类方法assign和display扩展到Ci的控...

六步实现Rest风格的API

Rest的作者认为计算机发展到现在,最大的成就不是企业应用,而是web,是漫漫无边的互联网web世界。Web能有这么大的成就,它值得我们研究。所以Rest的作者仔细研究了Web,按照Web的世界一些关键特性,提出了我们在实现企业应用的时候应该遵循的一种风格,就是Restful。Rest风格的API可以给我们很多好处,比如:简洁,统一,性能,可扩展性等等。可惜的是,在实现Rest的时候,总有一些Rest的关键特性没有实现,比如,无状态性,这在我做过的两个项目和我知道的另外一个项目都存在。事实上要实现无状态性在java里不是那么容易,因为那意味着要把servlet的session抛弃了。除此之外,Rest的一些其他特性在各个项目中实现的也是各有不同。接下来,我会列出一些我认为的,要实现Rest风格API的关键步骤: 所有要给API操作的对象都只能是资源。不管实际上存在的,还是抽象上的。所有资源都会有一个不变的标识(ID),对资源的任何API操作都不应该改变资源的标识。资源和其他资源会有关系,资源与资源的关系通过资源的标识来引用。对资源的操作都应该是完整的,比如获取资源拿到的应该是...

***解决PHP输出多余的空格或换行

用CI框架写APP后台接口的时候,返回的JSON前面有多余的2哥换行,首先排查的是BOM,结果问题依旧再就是排查<?php?>标签外没有多余的回车、换行,结果发现确实有多余的换行,去掉之后,问题消失。总结:建议去掉PHP结束标签,这样会避免很多莫名其妙的问题  写代码的童鞋应该知道,经常会在前端看到页面不能置顶,即使加了再多的样式,都不行,那就可以考虑一下是否为下面几种情况了:1、确认代码没有echo或者exit空格、换行;2、确保php文件里<?php?>标签外没有多余的回车、换行;3、以上两点都排查之后,如果你的代码文件为UTF8编码文件,那可以考虑可能是由于BOM文件头造成的,可以使用任何一款非微软制作的文本编辑器(如Notepad++、ultraedit等)打开文件,另存为无BOM的文件,如果文件太多,可以将以下代码保存并放到根目录下执行一次即可!<?php//removetheutf-8bomsif(isset($_GET['dir'])){//configthebasedir$basedir=$_GET['dir'];}el...

PHP 怎么随机获取数组里面的值

 注意array_rand随机返回的是KEY值的集合<?phpsrand((float)microtime()*10000000);$input=array("Neo","Morpheus","Trinity","Cypher","Tank");$rand_keys=array_rand($input,2);print$input[$rand_keys[0]]."";print$input[$rand_keys[1]]."";?> ...

Codeigniter开发技巧:连接多个数据库(可实现DB读写分离)

    在开发中,我们有时候会遇到在同一程序中链接多个数据库的需求,这对Codeigniter框架来说是很简单的,我们只需要在database.php文件中配置少许参数即可。 默认情况下,CI配置的是链接一个数据库,代码如下:123456789101112131415$db['default']['hostname']= "localhost";$db['default']['username']= "root";$db['default']['password']= "";$db['default']['database']= "first_database_name";$db['default']['dbdriver']= "mysql";$db['default']['dbprefix']= "";$db['default']['pconnect']=TRUE;$db['default']['db_debug']=FALSE;$db['default']['cache_o...

***微信浏览器禁止app下载链接怎么办

通过扫描二维码下载APP已成为一个非常方便的方式,微信也成为扫描二维码重要的工具,但是扫描后微信浏览器会对APK和appStore的链接进行屏蔽,导致用户无法正常下载。本文提供两个迂回的解决方案:1.使用腾讯应用宝;2.提示用户使用浏览器打开。第1种方法不用介绍了,把APP提交给腾讯应用宝即可,需要等待腾讯的审批,审批条件比较苛刻,腾讯采用分级审批方式,如果你是高级开发者,可以不审批先上线,如果是低级开发者,那么辛苦地等待吧。通过之后,会生成一个下载页面,该页面同时还能够跳转到appStore,前提是先录入appStore的相关信息。第2种方法思路:制作一个app下载页app-index.html,逻辑如下:如果,是weixin浏览器:如果,是iphone或者ipad:则显示“使用Safari打开”否则显示“使用浏览器打开”否则:显示下载页面测试样例,扫描下面二维码:效果如下:下面将js实现部分代码列举,也可通过查看源代码了解细节。functionis_weixin(){varua=navigator.userAgent.toLowerC...

***PHP 去除换行符

 PHP在不同的系统中,换行是不同的Linux:Windows:mac: 所以去除回车换行的方法:1.使用php定义好的变量(比较好的方法,推荐)$str= str_replace(PHP_EOL, '', $str);  2.使用str_replace来替换换行$str= str_replace(array("", "", ""),"", $str);...
IT猿 IT猿·2020-03-26

php截取小时和分钟,在进行和其它时间段的比较

用php截取时间的小时和分钟,然后判断这个时间是不是在 8:00到11:30之间,用php应该怎么写? date_default_timezone_set("Asia/Shanghai");$time=intval(date("Hi"));if($time>"800"&&$time<"1130"){//code} 方法二:$now=strtotime('2010-03-1511:00:00');$start=strtotime('2010-03-1500:00:00');$end=strtotime('2010-03-1523:59:59');if($now>=$start&&$now<=$end){echo"show";} ...

【PHP框架CodeIgniter学习】使用辅助函数—建立自己的JSONHelper

本文使用的是2.1.4版本,看的时候请注意。官方文档:http://codeigniter.org.cn/user_guide/general/helpers.html(关于辅助函数Helper的使用)一、辅助函数是什么       辅助函数,顾名思义,是帮助我们完成特定任务的函数。每个辅助函数文件仅仅是一些函数的集合。例如,URLHelpers 可以帮助我们创建链接,FormHelpers 可以帮助我们创建表单,TextHelpers 提供一系列的格式化输出方式,CookieHelpers 能帮助我们设置和读取COOKIE, FileHelpers能帮助我们处理文件,等等。二、怎么新建辅助函数打开applicationhelpers目录,新建json_helper.php;因为PHP自带的json_encode对中文的封装不是很好,会出现u5c3cu739b这种诡异的想象,那么我们想要的目的是输出中文,所以就写一个辅助函数来自己调用;内容:1234567891011...

***PHP各种编码的汉字字符串截取

虽然PHP有现成的截取字符串函数substr(),但是这个函数不能对汉字字符串进行截取,要实现这种效果还需要我们自己去编写相应的函数。汉字有多种编码,比如GB2312,UTF-8等,汉字字符串的截取需要区分这种汉字编码,下面是给出的几个解决方案。截取GB2312中文字符串<?php//截取中文字符串-functionmysubstr($str,$start,$len){$tmpstr="";$strlen=$start+$len;for($i=0;$i<$strlen;$i++){if(ord(substr($str,$i,1))>0xa0){$tmpstr.=substr($str,$i,2);$i++;}else$tmpstr.=substr($str,$i,1);}return$tmpstr;}?>截取utf8编码的多字节字符串<?php//截取utf8字符串functionutf8Substr($str,$from,$len){returnpreg_replace('#^(?:[x00-x7F]|[xC0-xFF][x80-xBF]+){0,'.$...

短网址的原理和实现

微博上经常会看到类似http://t.cn/Afafhe这样的短地址 那么实现原理是什么呢 其实很简单,系统把一个长的地址如http://www.xxx.com/ddd/xxx/a.html?dsada 首先用一个算法转换成短地址http://t.cn/Afafhe 然后把 Afafhe-->http://www.xxx.com/ddd/xxx/a.html?dsada的关系保存到数据库中 当用户访问http://t.cn/Afafhe网址时,系统到数据库找到对应的URL地址,实现跳转 那么我们要知道的1、算法2、系统的存储方式 首先看算法吧,网上搜索了下,大致是用MD5什么的生成的,其实这个算法主要是把长字符串变小,这个算法是不可逆的,所以别想着去直接反转短地址 要详细看算法的可以到网上搜索资料 2、系统的存储方式,如果我们自己写着玩,那直接找个SQLServer或者MySql之类的就可以,但是想新浪微博之类的大型网站,那个数据量是非常巨大的,我想他们应该用的NoSql非关系型数...
IT猿 IT猿·2020-03-26

PHP正则匹配title标题文本

///////////////////////////////////////////////////////////////////////////////////////////////////////////*传入文章ID解析出文章标题*///////////////////////////////////////////////////////////////////////////////////////////////////////////publicfunctiongetBookNameById($aid){//初始化curl$ch=curl_init();//url$url='http://www.motie.com/book/'.$aid;if(is_numeric($aid)){//正则表达式匹配$ru="/<h1sclass="p-title">s*<ashref="/book/d+">(.*)s*</a>s*</h1>/";}else{//<title>丧尸爆发之全家求生路_第一章丧尸爆发 为吾友爱乐...

php抓取页面的几种方法详解

本篇文章是对php抓取页面的几种方法进行了详细的分析介绍,需要的朋友参考下在做一些天气预报或者RSS订阅的程序时,往往需要抓取非本地文件,一般情况下都是利用php模拟浏览器的访问,通过http请求访问url地址,然后得到html源代码或者xml数据,得到数据我们不能直接输出,往往需要对内容进行提取,然后再进行格式化,以更加友好的方式显现出来。下面简单说一下php抓取页面的几种方法及原理:一、PHP抓取页面的主要方法:1.file()函数    2.file_get_contents()函数  3.fopen()->fread()->fclose()模式  4.curl方式  5.fsockopen()函数socket模式  6.使用插件(如:http://sourceforge.net/projects/snoopy/)二、PHP解析html或xml代码主要方式: 1.file()函数复制代码代码如下:<?php $url='ht...
首页上一页...629630631632633...下一页尾页