腾讯地图经纬度转百度地图经纬度
/**
* 中国正常GCJ02坐标---->百度地图BD09坐标
* 腾讯地图用的也是GCJ02坐标
* @param double $lat 纬度
* @param double $lng 经度
*/
function Convert_GCJ02_To_BD09($lat,$lng){
$x_pi = 3.14159265358979324 * 3000.0 / 180.0;
$x = $lng;
$y = $lat;
$z =sqrt($x * $x + $y * $y) + 0.00002 * sin($y * $x_pi);
$theta = atan2($y, $x) + 0.000003 * cos($x * $x_pi);
$lng = $z * cos($theta) + 0.0065;
$lat = $z * sin($theta) + 0.006;
return array('lng'=>$lng,'lat'=>$lat);
}
/**
* 百度地图BD09坐标---->中国正常GCJ02坐标
* 腾讯地图用的也是GCJ02坐标
* @param double $lat 纬度
* @param double $lng 经度
* @return array();
*/
function Convert_BD09_To_GCJ02($lat,$lng){
$x_pi = 3.14159265358979324 * 3000.0 / 180.0;
$x = $lng - 0.0065;
$y = $lat - 0.006;
$z = sqrt($x * $x + $y * $y) - 0.00002 * sin($y * $x_pi);
$theta = atan2($y, $x) - 0.000003 * cos($x * $x_pi);
$lng = $z * cos($theta);
$lat = $z * sin($theta);
return array('lng'=>$lng,'lat'=>$lat);
}
php markdown解析
header("content-type:text/html;charset=utf-8");
require_once('Parsedown.php');
$text = '##Markdown有哪些功能?
* 方便的`导入导出`功能
* 直接把一个markdown的文本文件拖放到当前这个页面就可以了
* 导出为一个html格式的文件,样式一点也不会丢失
* 编辑和预览`同步滚动`,所见即所得(右上角设置)
* `VIM快捷键`支持,方便vim党们快速的操作 (右上角设置)
* 强大的`自定义CSS`功能,方便定制自己的展示
* 有数量也有质量的`主题`,编辑器和预览区域
* 完美兼容`Github`的markdown语法
* 预览区域`代码高亮`
* 所有选项自动记忆
';
$result = Parsedown::instance()->parse($text);
echo $result;
php输出页面所有变量
print_r(get_defined_vars());
此函数返回一个包含所有已定义变量列表的多维数组,这些变量包括环境变量、服务器变量和用户定义的变量。
获取所有已经定义的函数
get_defined_functions()
获取所有可用的模块
get_loaded_extensions()
获取指定模块的可用函数
get_extension_funcs()
该函数返回指定模块所有可用的函数。传入的参数(模块名称)必须是小写
获取关联数组的名字所有的常量和他们的值 — (PHP 4 >= 4.1.0, PHP 5)
get_defined_constants()
get_declared_classes (PHP 4, PHP 5) — 获取由已定义类的名字所组成的数组
get_declared_classes()
get_included_files()(或者get_require_files) (PHP 4, PHP 5) — 获取由已定义类的名字所组成的数组
get_included_files()
PHP cURL 带cookies模拟HTTP
抓取个json数据,不知道哪里错了。遂重写一个
curl
header("content-type:text/html;charset=utf8");
$curl = curl_init('https://www.phpcto.org/course/19/lesson/170');
// 不输出header头信息
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_COOKIE, ' PHPSESSID=q406pvav5da7st8q4ov6c482e0');
// 伪装浏览器
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36');
// 保存到字符串而不是输出
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$rs = curl_exec($curl);
curl_close($curl);
//echo $rs;
$arr=json_decode($rs,true);
print_r($arr);
一、PHPMailer
$mail = new PHPMailer(true);
$mail->IsSMTP();
$mail->CharSet='UTF-8';
$mail->SMTPAuth = true;
$mail->Port = 25;
$mail->Host = "smtp.163.com";//邮箱smtp地址,此处以163为例
$mail->Username = "你的邮箱账号";//你的邮箱账号
$mail->Password = "你的邮箱密码";//你的邮箱密码
$mail->From = "你的邮箱账号";//你的邮箱账号
$mail->FromName = get_option('blogname');
$to = $to;
$mail->AddAddress($to);
$mail->Subject = $subject;
$mail->Body = $message;
$mail->WordWrap = 80;
//$mail->AddAttachment("f:/test.png"); //可以添加附件
$mail->IsHTML(true);
$mail->Send();
} catch (phpmailerException $e) {
// echo "邮件发送失败:".$e->errorMessage(); //测试的时候可以去掉此行的注释
}
QueryList提取HTML标签内容
由于要提取学校网站新闻标题和链接,首先想到的是正则,这次想换种方法去做,想到有QueryList这好东西,拿来试试
再来看看其标签:
td下面的a标签
废话不多说,上代码:
require 'QueryList/QueryList.class.php';
$url = "http://www.hkxy.edu.cn/";
$reg = array(
"title" => array("td>a","text"),
"src" => array("td>a","href"),
);
//$rang = "[id^=post-]";
$hj = QueryList::Query($url,$reg);
//$hj = QueryList::Query($url,$reg,$rang);
for($i=0;$ijsonArr);$i++){
//$hj->jsonArr[$i]['title']=html_entity_decode(($hj->jsonArr[$i]['title']),ENT_NOQUOTES,'utf-8');
$hj->jsonArr[$i]['title']=str_replace(' ','',$hj->jsonArr[$i]['title']);
}
print_r($hj->jsonArr);
//echo $hj->getJSON();
再来看下效果
PHP两种获取URL状态码的方法
第一种,cURL:判断URL是否能访问.0为失败
$curl = curl_init();
//$url='http://113.57.132.2:83/login.aspx';
$url='http://www.hkxy.edu.cn';
curl_setopt($curl, CURLOPT_URL, $url); //设置URL
curl_setopt($curl, CURLOPT_HEADER, 1); //获取Header
curl_setopt($curl,CURLOPT_NOBODY,true); //Body就不要了吧,我们只是需要Head
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //数据存到成字符串吧,别给我直接输出到屏幕了
curl_setopt($curl, CURLOPT_TIMEOUT, 7);
$data = curl_exec($curl); //开始执行啦~
echo curl_getinfo($curl,CURLINFO_HTTP_CODE); //我知道HTTPSTAT码哦~
curl_close($curl); //用完记得关掉他
第二种,$http_response_header
file_get_contents()超时设置:
$ctx = stream_context_create(array('http' => array('timeout' => 20)));
$result = @file_get_contents($url,false,$ctx);
}get_contents();var_dump($http_response_header);?>
以上例程的输出类似于:
array(9) {
[0]=>
string(15) "HTTP/1.1 200 OK"
[1]=>
string(35) "Date: Sat, 12 Apr 2008 17:30:38 GMT"
[2]=>
string(29) "Server: Apache/2.2.3 (CentOS)"
[3]=>
string(44) "Last-Modified: Tue, 15 Nov 2005 13:24:10 GMT"
[4]=>
string(27) "ETag: "280100-1b6-80bfd280""
[5]=>
string(20) "Accept-Ranges: bytes"
[6]=>
string(19) "Content-Length: 438"
[7]=>
string(17) "Connection: close"
[8]=>
string(38) "Content-Type: text/html; charset=UTF-8"
}
NULL
PHP DES加密解密
class Security {
public static function encrypt($input, $key) {
$size = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB);
$input = Security::pkcs5_pad($input, $size);
$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_ECB, '');
$iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
mcrypt_generic_init($td, $key, $iv);
$data = mcrypt_generic($td, $input);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
$data = base64_encode($data);
return $data;
}
private static function pkcs5_pad ($text, $blocksize) {
$pad = $blocksize - (strlen($text) % $blocksize);
return $text . str_repeat(chr($pad), $pad);
}
public static function decrypt($sStr, $sKey) {
$decrypted= mcrypt_decrypt(
MCRYPT_RIJNDAEL_128,
$sKey,
base64_decode($sStr),
MCRYPT_MODE_ECB
);
$dec_s = strlen($decrypted);
$padding = ord($decrypted[$dec_s-1]);
$decrypted = substr($decrypted, 0, -$padding);
return $decrypted;
}
}
$key = "rt94123456";
$data = "1234567890";
$value = Security::encrypt($data , $key );
echo $value.'
';
echo Security::decrypt($value, $key );
编码转换
今天做了个模拟抓取CET成绩查询的,发现账号和姓名是正确的就是始终无法登录,最后一步步比对,发现GBK和UTF8的 unicode转换是不一样的。
$str = iconv("GB2312", "UTF-8", $str);
GBK转UTF8
php excel_reader
今天需要将某个网站般去另一台服务器。设置好运行,显示一大堆Deprecated。
Deprecated: Assigning the return value of new by reference is deprecated in。
新服务器与旧服务器环境是一样的,后来查看php版本,发现旧服务器是 PHP 5.2.4 新的是PHP 5.3.2。之前了解到5.3 与 5.3之前的区别较大,于是查看php文档。
在5.3版本之后已经不允许在程序中使用"=&"符号。如果出现了Deprecated: Assigning the return value of new by reference is deprecated in 错误,先找到出错的文件,查找下是不是在程序中使用了"=&",如发现使用了"=&"符号,将 "=&" 改成 "=" 即可解决问题。
$link =& $this->links[$linkKey];
// 改为
$link = $this->links[$linkKey];
来源:oschina
链接:https://my.oschina.net/u/2304951/blog/498457