php識別
//為true時就是手機訪問否則為PC
functionisMobile(){
//如果有HTTP_X_WAP_PROFILE則一定是移動設備
if(isset($_SERVER['HTTP_X_WAP_PROFILE']))
returntrue;
//如果via信息含有wap則一定是移動設備,部分服務商會屏蔽該信息
if(isset($_SERVER['HTTP_VIA'])){
//找不到為flase,否則為true
returnstristr($_SERVER['HTTP_VIA'],"wap")?true:false;
}
//腦殘法,判斷手機發送的客戶端標志,兼容性有待提高
if(isset($_SERVER['HTTP_USER_AGENT'])){
$clientkeywords=array('nokia','sony','ericsson','mot','samsung','htc','sgh','lg','sharp','sie-','philips','panasonic','alcatel','lenovo','iphone','ipod','blackberry','meizu','android','netfront','symbian','ucweb','windowsce','palm','operamini','operamobi','openwave','nexusone','cldc','midp','wap','mobile');
//從HTTP_USER_AGENT中查找手機瀏覽器的關鍵字
if(preg_match("/(".implode('|',$clientkeywords).")/i",strtolower($_SERVER['HTTP_USER_AGENT'])))
returntrue;
}
//協議法,因為有可能不準確,放到最後判斷
if(isset($_SERVER['HTTP_ACCEPT'])){
//如果只支持wml並且不支持html那一定是移動設備
//如果支持wml和html但是wml在html之前則是移動設備
if((strpos($_SERVER['HTTP_ACCEPT'],'vnd.wap.wml')!==false)&&(strpos($_SERVER['HTTP_ACCEPT'],'text/html')===false||(strpos($_SERVER['HTTP_ACCEPT'],'vnd.wap.wml')<strpos($_SERVER['HTTP_ACCEPT'],'text/html')))){
returntrue;
}
}
returnfalse;
}
⑵ 實現地址自動識別實例(PHP)
文章正文
址自動識別現在普遍,特別是用在快遞填寫地址,姓名,手機號碼的時候,會把這些按照一定的規范填寫後,點擊自動識別後,會自動填寫到各自的input。最近也簡單的實現了這個功能,給後台添加用戶的時候,自動識別地址。以下是效果圖
具體問題具體姿凱分析!代碼實現基於laravel完成。一個laravel完整的功能得具備這些:路由route,Model, View, Controller, 我這里用的有依賴注入服務容器等功能,當然,用到地址,你首先要有地址庫。。。
下面來看看是如何實現的,這里我只貼出核心代碼
UsersController控制器
在伏冊握這里新建構造函數,實現容器的依賴注入 UsersRepository
接下來就新缺慶建地址識別的方法, $discernDel 接收的數據是從前端傳過來的,後面再貼前端代碼。 業務代碼處理交給容器 UsersRepository 里的方法 getDiscern 處理
來看看 userRepository容器處理地址識別的各種業務代碼
上面的方法處理手機,名稱,和地址處理,地址處理有些繁雜,因為有時候填寫的地址有不一樣的,比如廣西省,有些就填寫廣西壯族自治區,所以 getAddressArrar 方法處理地址匹配信息,根據自己的業務做調整,如下
前端html部分代碼
基本上能看得懂的。jquery用到 getDiscern(); 方法,手機號碼,姓名,地址等input這里就不一一列出了。大家根據下面的jquery都能想像到
jquery代碼部分
ajax post後交給url: getDiscern 處理,這個就是上面controller的方法,success返回的數據後再追加到每個input里,最後再清除掉自動識別地址框的數據
整個過程簡單,又清晰明了,以上就是我的代碼,分享給大家,覺得哪個地方不對勁的,歡迎留言吐槽!
⑶ 請問php有辦法識別一張圖片色塊分布嗎比如找出最適合添加文字的地方
理論上肯定是可以的。不過這應該是一個很高深的東西。所以,我只能給你我很粗淺的方法:
一:寫個函數,這個函數的主要功能是找出一張圖片上的主要顏色(代碼在最後面)
二:把一張圖片有GD庫分成9份(3*3)或更多份,然後用第一個函數來取得每一份小圖的主要顏色。
三:比對這幾份小圖的顏色,看哪一份的顏色是你需要的。
如果你原意,你也可以切很多份,比如10000份(100*100),然後計算這10000個顏色的中你需要的顏色的分布,找出你需要的區域。
$i = imagecreatefromjpeg("image.jpg");
for ($x=0;$x<imagesx($i);$x++) {
for ($y=0;$y<imagesy($i);$y++) {
$rgb = imagecolorat($i,$x,$y);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> & 0xFF;
$b = $rgb & 0xFF;
$rTotal += $r;
$gTotal += $g;
$bTotal += $b;
$total++;
}
}
$rAverage = round($rTotal/$total);
$gAverage = round($gTotal/$total);
$bAverage = round($bTotal/$total);
⑷ php關於textarea中換行、回車、空格的識別與處理
在使用 textarea 輸入文字後,如何在提交至後台並返回頁面時保持原有格式,包括換行、回車、空格等特殊字元?為了實現這一需求,需要了解瀏覽器的兼容性問題。
在 IE9 及以上版本、Firefox、Chrome 等主流瀏覽器中,換行符識別通常採用 「/」 格式;而在 IE7-8 中,識別換行符則需分兩步:首先匹配 「\r」,接著匹配 「/」。
針對這一問題,有兩種解決策略:
1. 替換特殊字元:將 「\r」 和 「\s」 分別替換為對應的字元串或特殊標記。這樣替換後的文本能夠被瀏覽器正確解析,從而顯示為原樣,包括換行、空格等格式。
具體實現方法如下:
例如,將 「\r」 替換為 「\n」,將 「\s」 替換為 「 」。這使得文本在顯示時能夠保持原有的換行和空格。
2. 替換為 ASCII 碼:將 「\r」 替換為 ASCII 碼的 chr(10),將 「\s」 替換為 chr(32)。這種方式下的文本雖然在其他地方無法解析為特殊字元,但在網頁中顯示時則能以 ASCII 碼的形式直接顯示出換行、空格等效果。
實現步驟如下(以 JavaScript 為例):
將 「\r」 替換為 「\u000A」,將 「\s」 替換為 「\u0020」。這樣替換後的文本以 HTML 格式顯示時,不會被解析為特殊字元,而是直接以字元形式顯示。
需要注意的幾點:
1. 使用 `str.replace('aa','dd')` 方法替換字元串時,僅替換第一次出現的「aa」。若需替換全部出現的「aa」,應使用正則表達式寫法:`str=str.replace(/aa/g,'dd');`。
2. 使用 `document.getElementById("ts").value.indexOf(" ")` 來獲取字元串中空格出現的第一次位置,以此判斷字元串是否包含空格。