PHP騰訊地圖經緯度轉百度地圖經緯度/PHP cURL 帶cookies模擬HTTP/PHP發送郵件

騰訊地圖經緯度轉百度地圖經緯度
php

/**
* 中國正常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解析

<?php
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;

markdown下載連接:http://pan.baidu.com/s/1eQo3cBohtml


php輸出頁面全部變量shell

<?php
print_r(get_defined_vars());

此函數返回一個包含全部已定義變量列表的多維數組,這些變量包括環境變量、服務器變量和用戶定義的變量。json


獲取全部已經定義的函數vim

<?php
get_defined_functions()

獲取全部可用的模塊數組

<?php
get_loaded_extensions()

獲取指定模塊的可用函數瀏覽器

<?php
get_extension_funcs()

該函數返回指定模塊全部可用的函數。傳入的參數(模塊名稱)必須是小寫服務器


獲取關聯數組的名字全部的常量和他們的值 —  (PHP 4 >= 4.1.0, PHP 5)markdown

<?php
get_defined_constants()

get_declared_classes (PHP 4, PHP 5) —  獲取由已定義類的名字所組成的數組cookie

<?php
get_declared_classes()

get_included_files()(或者get_require_files) (PHP 4, PHP 5) —  獲取由已定義類的名字所組成的數組

<?php
get_included_files()


PHP cURL 帶cookies模擬HTTP

抓取個json數據,不知道哪裏錯了。遂重寫一個

curl

<?php 
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);


1、PHPMailer

下載地址:http://pan.baidu.com/s/1o6LugJo

$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下載地址:   http://pan.baidu.com/s/1sjlvTSh


因爲要提取學校網站新聞標題和連接,首先想到的是正則,此次想換種方法去作,想到有QueryList這好東西,拿來試試

再來看看其標籤:

td下面的a標籤


廢話很少說,上代碼:

<?php
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;$i<count($hj->jsonArr);$i++){
    //$hj->jsonArr[$i]['title']=html_entity_decode(($hj->jsonArr[$i]['title']),ENT_NOQUOTES,'utf-8');
    $hj->jsonArr[$i]['title']=str_replace('&#160;','',$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);


<?php
function get_contents() {
  
file_get_contents("http://example.com");
  
var_dump($http_response_header);
}
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加密解密

<?php
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.'<br/>';
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];
相關文章
相關標籤/搜索