php提取字符串中网站url地址程序代码
例子
代码如下 | 复制代码 |
$postInfo['answer2'] ='可以的,商业贷款可摊还36%,公积金贷款可摊还16%|||可以先把账户里的余额提取出来用作首付,然后每个月贷款商业贷款可摊还36%,公积金贷款可摊还16%|||可以的,现在甲类公积金是摊还比例http://www.111cn.net是工资基数的34%|||啊啊啊啊啊啊啊啊是的|||可以摊还,甲类34% preg_match_all("/http:[\/]{2}[a-z]+[.]{1}[a-z\d\-]+[.]{1}[a-z\d]*[\/]*[A-Za-z\d]*[\/]*[A-Za-z\d]*/",$postInfo['answer2'],$array2); print_r($array2); 结果就为 ( ) |
对于没有防盗链的图片
代码如下 | 复制代码 |
/* * 对于没有防盗链的图片 * $url 图片地址 * $filename 图片保存地址 * return 返回下载的图片路径和名称,图片大小 */ function GrabImage($url,$filepath,$filename="") { if($url=="") return false; $ext=strrchr($url,"."); if($filename=="") { if($ext!=".gif" && $ext!=".jpg" && $ext!=".png") return false; $filename=date("YmdHis"); } ob_start(); readfile($url); $img = ob_get_contents(); ob_end_clean(); $size = strlen($img); // 图片大小 !is_dir(getcwd().$filepath)? mkdir(getcwd().$filepath):null;//生成文件夹 $fp2=fopen(getcwd().$filepath.$filename.$ext, "a"); fwrite($fp2,$img); fclose($fp2); return array($filepath.$filename.$ext,$size); } |
有防盗链的图片
代码如下 | 复制代码 |
/* * 有防盗链的图片 * $url 图片地址 * $filename 图片保存地址 * return 返回下载的图片路径和名称,图片大小 * $fromurl 来源URL,填写来源图片网址可破解防盗链 */ function GrabImage2($url,$filepath,$filename="",$fromurl) { if($url=="") return false; $ext=strrchr($url,"."); if($filename=="") { if($ext!=".gif" && $ext!=".jpg" && $ext!=".png") return false; $filename=date("YmdHis"); } !is_dir(getcwd().$filepath)? mkdir(getcwd().$filepath):null;//生成文件夹 $re = $this->curlg($url,$fromurl); $size = file_put_contents(getcwd().$filepath.$filename.$ext,$re);//返回大小 return array($filepath.$filename.$ext,$size); } |
批量采集代码:
代码如下 | 复制代码 |
/** * 批量下载图片 */ public function downimg(){ $keep = $this->_get("keep");//1从缓存获取2删除缓存/重新缓存 $id = $this->_get("id"); $id = $id?$id:0; $nextid = $id+1; if($keep!=1){ $data = M('Cjlist')->where("status=1")->select(); S("keepcjdata",$data,3600); }else{ $data = S("keepcjdata"); } $endid= count($data); //echo $id; //echo $endid; if($endid==$id){ exit('所有图片下载完成!'); } //echo $endid; $data2['cover_imgurl'] = $this->imgdown2($data[$id]['cover_imgurl']); //echo $data[$id]['thum_url']; $data2['thum_url'] = $this->imgdown2($data[$id]['thum_url'],'thum_');//中型图片type $data2['id']=$data[$id]['id']; if(!$data2['thum_url'] || !$data2['cover_imgurl']){ $data2['status']=-1; }else{ $data2['status']=2; } $res = M('Cjlist')->save($data2); //$this->echosql(); if($res){ echo '下载完成ID:'.$data2['id']." 前往下一个ID下载<script>window.location.href='".U('Index/downimg')."/keep/1/id/".$nextid."'</script>"; }else{ echo '保存出错,正在重试刷新。<script>window.location.reload()</script>'; } //dump($data2); //dump($data); } |
同时还可以生成缩略图哦
代码如下 | 复制代码 |
/* |
注意:
301,302 都是HTTP状态的编码,都代表着某个URL发生了转移,不同之处在于:
301 redirect: 301 代表永久性转移(Permanently Moved),
302 redirect: 302 代表暂时性转移(Temporarily Moved ),
例子
在php中正常的临时跳转通常使用:
代码如下 | 复制代码 |
<?php header("Location:your_dest_url"); ?> |
最简单的做法
代码如下 | 复制代码 |
$the_host = $_SERVER['HTTP_HOST'];//取得当前域名 |
这个还可以实现比如111cn.net 跳转到www.111cn.net 上,也就是让所有的页面都用带www的网址
代码如下 | 复制代码 |
<?php |
7、Apache下301转向代码
新建.htaccess文件,输入下列内容(需要开启mod_rewrite):
1)将不带WWW的域名转向到带WWW的域名下
代码如下 | 复制代码 |
Options +FollowSymLinks |
2)重定向到新域名
代码如下 | 复制代码 |
Options +FollowSymLinks |
wordpres根目录301跳转
代码如下 | 复制代码 |
# BEGIN WordPress |
测试
分析:
php 301跳转代码只适合于全php页面或单页面做跳转了,apache/iis 301跳转适用于大量的网站域名301跳转了,他们两共同点都是实现301但两者各人有优点吧,大家自行根据自己情况选择吧。
下面来简单的介绍在php中get_meta_tags()、CURL与user-agent信息对比情况,如果你对于这篇文章有兴趣可进入参考学习。get_meta_tags()函数用于抓取网页中<meta name="A" content="1"><meta name="B" content="2">形式的标签,并装入一维数组,name为元素下标,content为元素值,上例中的标签可以获得数组:array('A'=>'1', 'b'=>'2')。其他<meta>标签不处理,并且此函数只处理到</head>标签时截止,之后的<meta>也不再继续处理,不过<head>之前的<meta>还是会处理。
user-agent是浏览器在向服务器请求网页时,提交的不可见的头信息的一部分。头信息是一个数组,包含多个信息,比如本地缓存目录,cookies等,其中user-agent是浏览器类型申明,比如IE、Chrome、FF等。
今天在抓取一个网页的<meta>标签的时候,总是得到空值,但是直接查看网页源代码又是正常的,于是怀疑是否服务器设置了根据头信息来判断输出。先尝试使用get_meta_tags()来抓取一个本地的文件,然后这个本地文件将获取的头信息写入文件,结果如下(其中替换成了/,方便查看):
代码如下 | 复制代码 |
array ( |
果然在数组中没有HTTP_USER_AGENT这个元素,apache在向另外一台服务器发送请求的时候是没有UA的。之后查了一下资料,get_meta_tags()函数没有伪造UA的能力,所以只能使用其他办法解决了。
后来使用CURL来获取,就获取到了网页,不过使用上稍微麻烦一点,首先伪造UA,获取之后在使用正则表达式分析<meta>
伪造办法:
代码如下 | 复制代码 |
// 初始化一个 cURL // 设置你需要抓取的URL // 设置是否将文件头输出到浏览器,0不输出 // 设置UA,这里是将浏览器的UA转发到服务器,也可以手动指定值 // 设置cURL 参数,要求结果返回到字符串中还是输出到屏幕上。0输出屏幕并返回操作结果的BOOL值,1返回字符串 // 运行cURL,请求网页 // 关闭URL请求 // 处理获得的数据 |
json_encode()函数用法。
echo json_encode(array('a'=>'bbbb','c'=>'ddddd');
这样就会生成一个标准的json格式的数据
代码如下 | 复制代码 |
<?php //需要执行的SQL语句 //调用conn.php文件进行数据库操作 //提示操作成功信息,注意:$result存在于conn.php文件中,被调用出来 // $array=mysql_fetch_array($result,MYSQL_ASSOC); $users=array(); echo $row['id'].'-----------'.$row['name'].'</br>'; } */ /*单条数据*/ $row=mysql_fetch_row($result,MYSQL_ASSOC); mysql_free_result($result); ?> |
上面是数据库生成json数据了
单条数据:{"jsonObj":{"id":"1","name":"lmw"}}
多条数据:{"dataList":[{"id":"1","name":"lmw"},{"id":"2","name":"xxj"},{"id":"3","name":"xxxj"}]}
现在很多情况下,我们需要程序返回一个Json格式的结果,比如:
代码如下 | 复制代码 |
{ 可以将结果写成这样的数组形式: |
代码
代码如下 | 复制代码 |
function arrayRecursive(&$array, $function, $apply_to_keys_also = false) |
g:
$error_respon = array('code' => 'ERROR_MSG_MISS', 'msg' => '消息不存在');
echo JSON($array);
结果为:
{"code":"ERROR_MSG_MISS","msg":"消息不存在"}
客户端就可以解析这个结果了,当然错误码要用数字代替。
这样就好多了我们显示的直接是中文了,当然显示那个16进制的编码也是没有问题的哦。
相关文章
- 这篇文章主要介绍了C#中截取字符串的的基本方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-03
- 这篇文章主要介绍了C#开发Windows窗体应用程序的简单操作步骤,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-04-12
- 这篇文章介绍了C#判断字符串是否数字或字母的实例,有需要的朋友可以参考一下...2020-06-25
- 这篇文章主要介绍了PostgreSQL判断字符串是否包含目标字符串的多种方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-02-23
- 这篇文章主要介绍了C++ string常用截取字符串方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-04-25
- 本文通过例子,讲述了C++调用C#的DLL程序的方法,作出了以下总结,下面就让我们一起来学习吧。...2020-06-25
- 本文实例讲述了php字符串按照单词进行反转的方法。分享给大家供大家参考。具体分析如下:下面的php代码可以将字符串按照单词进行反转输出,实际上是现将字符串按照空格分隔到数组,然后对数组进行反转输出。...2015-03-15
- 本文通过两个示例讲解了一下Process类调用外部应用程序的基本用法,并简单讲解了StartInfo属性,有需要的朋友可以参考一下。...2020-06-25
- 这篇文章主要介绍了微信小程序 页面传值详解的相关资料,需要的朋友可以参考下...2017-03-13
- 大概有如下步骤 新建项目Bejs 新建文件package.json 新建文件Gruntfile.js 命令行执行grunt任务 一、新建项目Bejs源码放在src下,该目录有两个js文件,selector.js和ajax.js。编译后代码放在dest,这个grunt会...2014-06-07
- 这篇文章主要介绍了使用list stream:任意对象List拼接字符串操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-09
- 这篇文章主要介绍了MySQL 字符串拆分操作(含分隔符的字符串截取),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-22
- 这篇文章主要介绍了C# 16 进制字符串转 int的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2020-06-25
- JS中默认中文字符长度和其它字符长度计算方法是一样的,但某些情况下我们需要获取中文字符串的实际长度,代码如下: 复制代码 代码如下: function strLength(str) { var realLength = 0, len = str.length, charCode = -1;...2014-06-07
- 这篇文章主要介绍了uniapp微信小程序:key失效的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-01-20
- 这篇文章主要介绍了C#实现字符串转换成字节数组的简单实现方法,仅一行代码即可搞定,非常简单实用,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了PostgreSQL 字符串处理与日期处理操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-01
- 文章介绍一个实用的函数,我们如果用php substr来截取字符在中文上处理的很有问题,今天自己写了一个比较好的中文与英文字符截取的函数,有需要的朋友可以参考下。 ...2016-11-25
- 本文实例讲述了PHP常用的小程序代码段。分享给大家供大家参考,具体如下:1.计算两个时间的相差几天$startdate=strtotime("2009-12-09");$enddate=strtotime("2009-12-05");上面的php时间日期函数strtotime已经把字符串...2015-11-24
将c#编写的程序打包成应用程序的实现步骤分享(安装,卸载) 图文
时常会写用c#一些程序,但如何将他们和photoshop一样的大型软件打成一个压缩包,以便于发布....2020-06-25