在php中我们经常会需要把字符串中的超级链接地址与url给过滤掉,下面我来利用php正则功能实现替换掉网页中所有超链接与url实例,各位朋友可参考。
正则替换掉网页中所有超链接
代码如下 |
复制代码 |
<?php
$content = file_get_contents('test.html');
$url = 'http://www.111cn.net'; //要换成的新网址
$preg = '/[s]href=("|')[S]*("|')/i';
$replace = ' href="' . $url . '"';
$content = preg_replace($preg, $replace, $content); //正则替换
create_log('newhtml', $content); //生成新文件
?>
|
下面是写文件操作
代码如下 |
复制代码 |
function create_log($filename, $text) {
if ( strtolower(substr($filename, -4)) != 'html' ){
$filename .= '.html';
}
$filename = dirname ( __FILE__ ) . '/' . $filename;
if (!file_exists ( $filename )) {
exec( 'touch '. $filename);
exec( 'chmod 777 '. $filename);
}
$handle = fopen ( $filename, "w+b" );
$text .= "rn";
fwrite($handle, $text);
fclose ( $handle );
}
|
下面我一个采集的功能
代码如下 |
复制代码 |
$url ='http://www.111cn.net';
$body=@file_get_contents($url);
preg_match_all('/href=['"]?([^'"]*)['"]?>(.*)/i',$body,$b);
$nums = array();
foreach($b[1] as $u){
if(in_array($u,$nums)){
continue;
}
$nums[]=$u;
$title=strip_tags($u);
echo $title."</br>";
}
|
今天给大家转一个不错的数组平均值算法函数,这个主要是针对二维数据值的算法,各位有需要了朋友可参考。
计算数组平均值 二维数组平均值计算 分组计算平均值
代码如下 |
复制代码 |
$array = array(
array('class' => 'a', 'value' => 3),
array('class' => 'a', 'value' => 4),
array('class' => 'b', 'value' => 5),
array('class' => 'b', 'value' => 6)
)
|
这样的数组可分别以 class键值分组计算平均值
也可以单独计算总的平均值,用法如下
代码如下 |
复制代码 |
array_avg($array, 'class');//返回二维数组
array_avg($array);//返回一维数组
// 计算平均值 返回一维数组
// 参数$avgby 按照指定字段算平均值 返回二维数组
private function array_avg($array, $avgby = NULL) {
$array_avg = array ();
$number = count ( $array );
foreach ( $array as $key => $value ) {
if ($avgby) {
$avg_key = $value[$avgby];
$array_avg[$avg_key]['count'] ++;
foreach ( $value as $k => $v ) {
$array_avg[$avg_key][$k] += $v;
}
} else {
foreach ( $value as $k => $v ) {
$array_avg[$k] += $v;
}
}
}
$array = array ();
foreach ( $array_avg as $key => $value ) {
if ($avgby) {
foreach ( $value as $k => $v ) {
$array[$key][$k] = $v / $value['count'];
}
} else {
$array[$key] = $value / $number;
}
}
return $array;
}
|
在jquery中的ajax请求方法有很多,可是$.ajax, $.get, or $.post,并且他可以是json,html,txt等格式,这样我们需要在php根据ajax发送过来的HTTP_X_REQUESTED_WITH是否为ajax请求,然后再根据$_SERVER[\'HTTP_ACCEPT\']检判断是那格式的请求。
php中就是在header一层判断是否是ajax请求,对应的根据$_SERVER['HTTP_X_REQUESTED_WITH']判断。
代码如下 |
复制代码 |
/**
* 当前请求是否ajax请求
*
* @access public
* @return bool
*/
function isAjax()
{
return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'XMLHttpRequest';
}
|
一般情况下$_SERVER['HTTP_X_REQUESTED_WITH']默认是XMLHttpRequest
ajax跨域只能指定jsonp格式的数据,这个是就不是XMLHttpRequest对象了,就算你自定义一个$_SERVER['HTTP_X_REQUESTED_WITH']也是没有意义的
解决的办法:
针对跨域情况的getjson 或者ajax(jsonp)可以使用ACCEPT请求头部格式来判断
PHP端对应$_SERVER['HTTP_ACCEPT']
jsonp的请求一般是:text/javascript, application/javascript, */*
json的请求:application/json, text/javascript, */*
一个简单的判断跨域条件下的ajax请求:
代码如下 |
复制代码 |
switch ($_SERVER['HTTP_ACCEPT']){
case 'application/json, text/javascript, */*':
// JSON 格式
break;
case 'text/javascript, application/javascript, */*':
// javascript 或 JSONP 格式
break;
case 'text/html, */*':
// HTML 格式
break;
case 'application/xml, text/xml, */*':
// XML 格式
break;
}
|
在php中页面跳转我们用到的是header函数了,如果要定时跳转页面我们就必须使用js或html了,下面我来给各位同学总结一下各种页面跳转的实现程序。
header()函数
header()函数是PHP中进行页面跳转的一种十分简单的方法。header()函数的主要功能是将HTTP协议标头(header)输出到浏览器。
header()函数的定义如下:
void header (string string [,bool replace [,int http_response_code]])
可选参数replace指明是替换前一条类似标头还是添加一条相同类型的标头,默认为替换。
第二个可选参数http_response_code强制将HTTP相应代码设为指定值。 header函数中Location类型的标头是一种特殊的header调用,常用来实现页面跳转。注意:1.location和“:”号间不能有空格,否则不会跳转。
1.使用php里head函数进行跳转
注意:head跳转前不要有任何输出,不然可能不能跳转.
代码如下 |
复制代码 |
header("refresh:3;url=http://www.111cn.net");//限时跳转
header('location:http://www.111cn.net');//立即跳转
|
2. HTML meta refresh 刷新与跳转(重定向)页面
Meta标签
Meta标签是HTML中负责提供文档元信息的标签,在PHP程序中使用该标签,也可以实现页面跳转。 若定义http-equiv为refresh,则打开该页面时将根据content规定的值在一定时间内跳转到相应页面。
refresh 属性值 — 刷新与跳转(重定向)页面
refresh用于刷新与跳转(重定向)页面
refresh出现在http-equiv属性中,使用content属性表示刷新或跳转的开始时间与跳转的网址
代码如下 |
复制代码 |
<meta http-equiv="refresh" content="3; url=http://www.111cn.net">
|
3.js实现页面跳转
js实现跳转主要用到location对象
代码如下 |
复制代码 |
<script type='text/javascript'>
// 立即跳转
window.location.href = 'http://www.111cn.net';
// 限时跳转
setTimeout(function(){
// 3秒后跳转
window.location.href = 'http://www.111cn.net';
},3000);
</script>
|
在php中如果我们要获取汉字的拼音第一个字母我们先要了解asc码的范围码了,我们只要知道这个值上下限就可以使用php中的ord来获取我相关的汉字拼音了。
实例1
代码如下 |
复制代码 |
function getFirstCharter($str) {
if (empty($str)) {return '';}
$fchar = ord($str{0});
if ($fchar>=ord('A') && $fchar<=ord('z')) return strtoupper($str{0});
$s1 = iconv('UTF-8', 'gb2312', $str);
$s2 = iconv('gb2312', 'UTF-8', $s1);
$s = $s2 == $str ? $s1 : $str;
$asc = ord($s{0})*256 + ord($s{1}) - 65536;
if ($asc>=-20319 && $asc<=-20284) return 'A';
if ($asc>=-20283 && $asc<=-19776) return 'B';
if ($asc>=-19775 && $asc<=-19219) return 'C';
if ($asc>=-19218 && $asc<=-18711) return 'D';
if ($asc>=-18710 && $asc<=-18527) return 'E';
if ($asc>=-18526 && $asc<=-18240) return 'F';
if ($asc>=-18239 && $asc<=-17923) return 'G';
if ($asc>=-17922 && $asc<=-17418) return 'H';
if ($asc>=-17417 && $asc<=-16475) return 'J';
if ($asc>=-16474 && $asc<=-16213) return 'K';
if ($asc>=-16212 && $asc<=-15641) return 'L';
if ($asc>=-15640 && $asc<=-15166) return 'M';
if ($asc>=-15165 && $asc<=-14923) return 'N';
if ($asc>=-14922 && $asc<=-14915) return 'O';
if ($asc>=-14914 && $asc<=-14631) return 'P';
if ($asc>=-14630 && $asc<=-14150) return 'Q';
if ($asc>=-14149 && $asc<=-14091) return 'R';
if ($asc>=-14090 && $asc<=-13319) return 'S';
if ($asc>=-13318 && $asc<=-12839) return 'T';
if ($asc>=-12838 && $asc<=-12557) return 'W';
if ($asc>=-12556 && $asc<=-11848) return 'X';
if ($asc>=-11847 && $asc<=-11056) return 'Y';
if ($asc>=-11055 && $asc<=-10247) return 'Z';
return null;
}
例如:
echo getFirstCharter("程序员3aj.cn"); // 结果将输出:C
|
实例二
代码如下 |
复制代码 |
<?php
$limit=array( //gb2312 拼音排序
array(45217,45252), //A
array(45253,45760), //B
array(45761,46317), //C
array(46318,46825), //D
array(46826,47009), //E
array(47010,47296), //F
array(47297,47613), //G
array(47614,48118), //H
array(0,0), //I
array(48119,49061), //J
array(49062,49323), //K
array(49324,49895), //L
array(49896,50370), //M
array(50371,50613), //N
array(50614,50621), //O
array(50622,50905), //P
array(50906,51386), //Q
array(51387,51445), //R
array(51446,52217), //S
array(52218,52697), //T
array(0,0), //U
array(0,0), //V
array(52698,52979), //W
array(52980,53688), //X
array(53689,54480), //Y
array(54481,55289), //Z
);
$str="A:这是一个测试程序1";
$str= iconv("UTF-8","gb2312", $str);
echo $str."</br>";
$i=0;
while($i<strlen($str) ) {
$tmp=bin2hex(substr($str,$i,1));
if($tmp>='B0'){ //汉字的开始
$t=getLetter(hexdec(bin2hex(substr($str,$i,2))));
printf("%c",$t==-1 ? '*' : $t );
$i+=2;
}
else{
printf("%s",substr($str,$i,1));
$i++;
}
}
function getLetter($num){
global $limit;
$char_index=65;
foreach($limit as $k=>$v){
if($num>=$v[0] && $num<=$v[1]){
$char_index+=$k;
return $char_index;
}
}
return -1;
}
?> |
标签:[!--infotagslink--]