php 过滤字符串中链接地址
过滤链接最简单的办法就是利用php教程的strip_tags函数,如下
php过滤html的函数:strip_tags(string) 这样就可以过滤掉所有的html标签了。
如果想过滤掉除了<img src="">之外的所有html标签,则可以这样写:strip_tags(string,"<img>");
过滤除了<img src=""><p>xxx</p><b></b>之外的所有html标签,
则可以这样写:
strip_tags(string,"<img><p><b>");
上面的做法不可取,因为它把所有的html都给过滤了,下面我们只要过滤连接部份。
<?php
echo preg_replace("/(?<=href=)([^>]*)(?=>)/i","#", "<a href='www.111cn.net'>你好,点这里看看</a><a href='www.111cn.net'>你好,点这里看看</a>");
?>
正则:/(?<=href=)([^>]*)(?=>)/
(?<=exp) 匹配exp后面的位置
(?=exp) 匹配exp前面的位置
此正则 匹配 在 href= 之后 “>” 之前 的 非 “>” 的所有字符
例子:<a href='www.111cn.net '>
升级一下,我们只过滤其它网站的链接保存自己网站的
$str ='<li><a href="http://www.111cn.net/12345s" target="_blank"> 施华洛世奇!</a></li><li><a href=http://123.com/n.php?a=luxury& target="_blank"> f乔</a></li><li><a href="http://mb.111cn.net/" target="_blank"> f衣';
$match='/<li><ashref="?http://[w.]*123.com/[w]+.php?a=*[w&=]*"?s+target="_blank">(.*)</a></li>/isu';
preg_match_all($match,$str,$arr);
echo "<pre>";
print_r($arr[0]);
echo "</pre>";
更多详细内容请查看:http://www.111cn.net/phper/php/35063.htm
查了下,CURL确实很强悍的可以伪造IP和来源,下面看实现有需要的朋友可以参考一下。
1.php教程 请求 2.php 。
1.php代码:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://localhost/2.php");
curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-FORWARDED-FOR:8.8.8.8', 'CLIENT-IP:8.8.8.8')); //构造IP
curl_setopt($ch, CURLOPT_REFERER, "http://www.111cn.net/ "); //构造来路
curl_setopt($ch, CURLOPT_HEADER, 1);
$out = curl_exec($ch);
curl_close($ch);
2.php代码如下:
function getClientIp() {
if (!empty($_SERVER["HTTP_CLIENT_IP"]))
$ip = $_SERVER["HTTP_CLIENT_IP"];
else if (!empty($_SERVER["HTTP_X_FORWARDED_FOR"]))
$ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
else if (!empty($_SERVER["REMOTE_ADDR"]))
$ip = $_SERVER["REMOTE_ADDR"];
else
$ip = "err";
return $ip;
}
echo "IP: " . getClientIp() . "";
echo "referer: " . $_SERVER["HTTP_REFERER"];
伪造成功,这是不是给“刷票”的朋友提供了很好的换IP的方案!!
哈哈
数据库教程
--
-- Table structure for table `category`
--
CREATE TABLE IF NOT EXISTS `category` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`catpath` varchar(255) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=11 ;
--
-- Dumping data for table `category`
--
INSERT INTO `category` (`id`, `catpath`, `name`) VALUES
(1, '0', '网站首页'),
(2, '0-1', 'Linux OS'),
(3, '0-1', 'Apache服务器'),
(4, '0-1', 'MySQL数据库'),
(5, '0-1', 'PHP脚本语言'),
(6, '0-1-2', 'Linux 系统教程'),
(7, '0-1-2', 'Linux 网络技术'),
(8, '0-1-2', 'Linux 安全基础'),
(9, '0-1-2-7', 'Linux LAMP'),
(10, '0-1-3-10', 'apache Server');
php教程代码
$conn = mysql教程_connect ( 'localhost', 'root', '' );
mysql_select_db ( 'test', $conn );
mysql_query ( 'set names UTF8' );
$sql = "select id,concat(catpath,'-',id) as abspath,name from category order by abspath";
$query = mysql_query ( $sql );
while ( $row = mysql_fetch_array ( $query ) ) {
/**
* 第一种展示方法
*/
/*$space = str_repeat ( ' ', count ( explode ( '-', $row ['abspath'] ) ) - 1 );
echo $space . $row ['name'] . '<br>';*/
/**
* 第二种展示方法
*/
$space = str_repeat ( ' ', count ( explode ( '-', $row ['abspath'] ) ) - 1 );
$option .= '<option value="' . $row ['id'] . '">' . $space . $row ['name'] . '</option>';
}
echo '<select name="opt">' . $option . '</select>';
效果
开发中经常用到关于用程序 模仿用户post信息,下面我介介绍了几种方法,有需要的朋友参考一下。
# <?php教程
# /**
# * Socket版本
# * 使用方法:
# * $post_string = "app=socket&version=beta";
# * request_by_socket('facebook.cn','/restServer.php',$post_string);
# */
# function request_by_socket($remote_server,$remote_path,$post_string,$port = 80,$timeout = 30){
# $socket = fsockopen($remote_server,$port,$errno,$errstr,$timeout);
# if (!$socket) die("$errstr($errno)");
#
# fwrite($socket,"POST $remote_path HTTP/1.0");
# fwrite($socket,"User-Agent: Socket Example");
# fwrite($socket,"HOST: $remote_server");
# fwrite($socket,"Content-type: application/x-www-form-urlencoded");
# fwrite($socket,"Content-length: ".strlen($post_string)+8."");
# fwrite($socket,"Accept:*/*");
# fwrite($socket,"");
# fwrite($socket,"mypost=$post_string");
# fwrite($socket,"");
#
# $header = "";
# while ($str = trim(fgets($socket,4096))) {
# $header.=$str;
# }
#
# $data = "";
# while (!feof($socket)) {
# $data .= fgets($socket,4096);
# }
#
# return $data;
# }
#
关socket更详细教程请查看
http://www.111cn.net/phper/30/7cadb3c9195ac7d8ac9104da61a25c6e.htm
# /**
# * Curl版本
# * 使用方法:
# * $post_string = "app=request&version=beta";
# * request_by_curl('http://facebook.cn/restServer.php',$post_string);
# */
# function request_by_curl($remote_server,$post_string){
# $ch = curl_init();
# curl_setopt($ch,CURLOPT_URL,$remote_server);
# curl_setopt($ch,CURLOPT_POSTFIELDS,'mypost='.$post_string);
# curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
# curl_setopt($ch,CURLOPT_USERAGENT,"Jimmy's CURL Example beta");
# $data = curl_exec($ch);
# curl_close($ch);
# return $data;
# }
cURL库可以简单和有效地去抓网页,您只需要运行一个脚本,然后分析一下您所抓取的网页,然后就可以以程序的方式得到您想要的数据了。无论是您想从一个链接上取部分数据,或是取一个XML文件并把其导入数据库教程,哪怕就是简单的获取网页内容,cURL是一个功能强大的PHP库。本文主要讲述如果使用这个PHP库。
curl参考文献
http://www.111cn.net/phper/18/curl-php.htm
# /**
# * 其它版本
# * 使用方法:
# * $post_string = "app=request&version=beta";
# * request_by_other('http://facebook.cn/restServer.php',$post_string);
# */
# function request_by_other($remote_server,$post_string){
# $context = array(
# 'http'=>array(
# 'method'=>'POST',
# 'header'=>'Content-type: application/x-www-form-urlencoded'."".
# 'User-Agent : Jimmy's POST Example beta'."".
# 'Content-length: '.strlen($post_string)+8,
# 'content'=>'mypost='.$post_string)
# );
# $stream_context = stream_context_create($context);
# $data = file_get_contents($remote_server,FALSE,$stream_context);
# return $data;
# }
#
# ?>
file_get_contents() 函数把整个文件读入一个字符串中。
和 file() 一样,不同的是 file_get_contents() 把文件读入一个字符串。
file_get_contents() 函数是用于将文件的内容读入到一个字符串中的首选方法。如果操作系统支持,还会使用内存映射技术来增强性能。
参考文献
http://www.111cn.net/phper/24/f8d52eaae81ea27383375ead36ffbd4d.htm
php教程显示文章 几分钟前,几小时前,几天前发布类
文章发表时的UNIX时间戳,来转化为例如 几分钟前,几小时前,几天前 这样的提示。如微博
这看起来更加人性化
1 <?php
2 class timeAgo
3 {
4 static $timeagoObject;
5 private $rustle;
6 private $unit;
7
8 private function __construct()
9 {
10
11 }
12 private function __clone(){ }
13 public static function getObject()
14 {
15 if(! (self::$timeagoObject instanceof self) )
16 self::$timeagoObject = new timeAgo();
17
18 return self::$timeagoObject;
19 }
20 private function count_int($unix_C) // main function
21 {
22 if(! (isset($unix_C) || is_numeric($unix_C)) )
23 return 'don't find parameter';
24
25 $d = time()-$unix_C ; // $d - unix time difference value
26 $d_int =(int)floor($d/60) ; // minimum unit -- minutes unix/60
27
28 $this->unit = 0 ; // is minutes,hour or day?
29
30 if($d_int < 60){ // minutes in one hour 3600
31 $this->rustle = $d_int;
32 $this->unit = 1;
33 }
34 else if($d_int < 720){ //hour in one day 3600*12
35 $this->rustle = floor($d_int/60);
36 $this->unit = 2 ;
37 }
38 else if($d_int < 7200){ //day in ten days 3600*12*10
39 $this->rustle = floor($d_int/720);
40 $this->unit = 3 ;
41 }
42 else{
43 $this->rustle = $d ;
44 $this->unit = 4 ;
45 }
46 }
47 public function piece_str($C)
48 {
49 $this->count_int($C);
50
51 $u = '';
52 switch( $this->unit )
53 {
54 case 1:
55 $u = 'minute';
56 break;
57 case 2:
58 $u = 'hour';
59 break;
60 case 3:
61 $u = 'day';
62 break;
63 case 4:
64 $u = '';
65 break;
66 case 0:
67 return 'sorry , get time is fail';
68 }
69 if($this->unit < 4)
70 {
71 if($this->rustle > 1)
72 return (string)$this->rustle.$u.'s ago';
73 else if($this->rustle == 1)
74 return (string)$this->rustle.$u.'ago';
75 else
76 return 'Just now';
77 }
78 }
79 /* example: $ago = timeAgo::getObject();
80 * echo $ago->piece_str($unix);
81 * // 2 days ago
82 */
83 }
84 ?>
相关文章
- 这篇文章主要介绍了C#中截取字符串的的基本方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-03
- 这篇文章介绍了C#判断字符串是否数字或字母的实例,有需要的朋友可以参考一下...2020-06-25
- 这篇文章主要介绍了PostgreSQL判断字符串是否包含目标字符串的多种方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-02-23
- 这篇文章主要介绍了C++ string常用截取字符串方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-04-25
- 本文实例讲述了php字符串按照单词进行反转的方法。分享给大家供大家参考。具体分析如下:下面的php代码可以将字符串按照单词进行反转输出,实际上是现将字符串按照空格分隔到数组,然后对数组进行反转输出。...2015-03-15
- 今天在写一个vbs的时候,发现中文乱码,后来写好代码正常运行的代码压缩一下给了同事,发现报无效字符,经过验证后发现原来是编码的问题导致,这里就为大家分享一下...2020-06-30
- 这篇文章主要介绍了MySQL 字符串拆分操作(含分隔符的字符串截取),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-22
- 这篇文章主要介绍了C#实现字符串转换成字节数组的简单实现方法,仅一行代码即可搞定,非常简单实用,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了使用list stream:任意对象List拼接字符串操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-09
- 本文实例讲述了jQuery实现鼠标滑过链接控制图片的滑动展开与隐藏效果。分享给大家供大家参考,具体如下:这里演示jQuery实现鼠标移动到链接上,滑动展开/隐藏图片效果,鼠标放在“上一页”“下一页”上,立即浮现出所对应的图...2015-10-30
- 这篇文章主要介绍了C# 16 进制字符串转 int的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2020-06-25
- JS中默认中文字符长度和其它字符长度计算方法是一样的,但某些情况下我们需要获取中文字符串的实际长度,代码如下: 复制代码 代码如下: function strLength(str) { var realLength = 0, len = str.length, charCode = -1;...2014-06-07
- 这篇文章主要介绍了PostgreSQL 字符串处理与日期处理操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-01
- 文章介绍一个实用的函数,我们如果用php substr来截取字符在中文上处理的很有问题,今天自己写了一个比较好的中文与英文字符截取的函数,有需要的朋友可以参考下。 ...2016-11-25
- 这篇文章主要介绍了C#实现对字符串进行大小写切换的方法,涉及C#操作字符串的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了c#将字节数组转成易读的字符串的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
- 这篇文章主要介绍了C#获取字符串后几位数的方法,实例分析了C#操作字符串的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了解决vue字符串换行问题(绝对管用),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-06
- 这篇文章主要介绍了C#判断一个字符串是否是数字或者含有某个数字的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了Substring截取字符串方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25