0

0

PHP检测输入数据是否合法常用的类

php中文网

php中文网

发布时间:2016-07-25 09:12:24

|

1202人浏览过

|

来源于php中文网

原创

  1. class Fun{
  2. function isEmpty($val)
  3. {
  4. if (!is_string($val)) return false; //是否是字符串类型
  5. if (empty($val)) return false; //是否已设定
  6. if ($val=='') return false; //是否为空
  7. return true;
  8. }
  9. /*
  10. -----------------------------------------------------------
  11. 函数名称:isNumber
  12. 简要描述:检查输入的是否为数字
  13. 输入:string
  14. 输出:boolean
  15. 修改日志:------
  16. -----------------------------------------------------------
  17. */
  18. function isNumber($val)
  19. {
  20. if(ereg("^[0-9]+$", $val))
  21. return true;
  22. return false;
  23. }
  24. /*
  25. -----------------------------------------------------------
  26. 函数名称:isPhone
  27. 简要描述:检查输入的是否为电话
  28. 输入:string
  29. 输出:boolean
  30. 修改日志:------
  31. -----------------------------------------------------------
  32. */
  33. function isPhone($val)
  34. {
  35. //eg: xxx-xxxxxxxx-xxx | xxxx-xxxxxxx-xxx ...
  36. if(ereg("^((0d{2,3})-)(d{7,8})(-(d{3,}))?$",$val))
  37. return true;
  38. return false;
  39. }
  40. /*
  41. -----------------------------------------------------------
  42. 函数名称:isPostcode
  43. 简要描述:检查输入的是否为邮编
  44. 输入:string
  45. 输出:boolean
  46. 修改日志:------
  47. -----------------------------------------------------------
  48. */
  49. function isPostcode($val)
  50. {
  51. if(ereg("^[0-9]{4,6}$",$val))
  52. return true;
  53. return false;
  54. }
  55. /*
  56. -----------------------------------------------------------
  57. 函数名称:isEmail
  58. 简要描述:邮箱地址合法性检查
  59. 输入:string
  60. 输出:boolean
  61. 修改日志:------
  62. -----------------------------------------------------------
  63. */
  64. function isEmail($val,$domain="")
  65. {
  66. if(!$domain)
  67. {
  68. if( preg_match("/^[a-z0-9-_.]+@[da-z][.w-]+.[a-z]{2,4}$/i", $val) )
  69. {
  70. return true;
  71. }
  72. else
  73. return false;
  74. }
  75. else
  76. {
  77. if( preg_match("/^[a-z0-9-_.]+@".$domain."$/i", $val) )
  78. {
  79. return true;
  80. }
  81. else
  82. return false;
  83. }
  84. }//end func
  85. /*
  86. -----------------------------------------------------------
  87. 函数名称:isName
  88. 简要描述:姓名昵称合法性检查,只能输入中文英文
  89. 输入:string
  90. 输出:boolean
  91. 修改日志:------
  92. -----------------------------------------------------------
  93. */
  94. function isName($val)
  95. {
  96. if( preg_match("/^[-a-zA-Z0-9]{3,60}$/", $val) )//2008-7-24
  97. {
  98. return true;
  99. }
  100. return false;
  101. }//end func
  102. /*
  103. -----------------------------------------------------------
  104. 函数名称:isStrLength($theelement, $min, $max)
  105. 简要描述:检查字符串长度是否符合要求
  106. 输入:mixed (字符串,最小长度,最大长度)
  107. 输出:boolean
  108. 修改日志:------
  109. -----------------------------------------------------------
  110. */
  111. function isStrLength($val, $min, $max)
  112. {
  113. $theelement= trim($val);
  114. if(ereg("^[a-zA-Z0-9]{".$min.",".$max."}$",$val))
  115. return true;
  116. return false;
  117. }
  118. /*
  119. -----------------------------------------------------------
  120. 函数名称:isNumberLength($theelement, $min, $max)
  121. 简要描述:检查字符串长度是否符合要求
  122. 输入:mixed (字符串,最小长度,最大长度)
  123. 输出:boolean
  124. 修改日志:------
  125. -----------------------------------------------------------
  126. */
  127. function isNumLength($val, $min, $max)
  128. {
  129. $theelement= trim($val);
  130. if(ereg("^[0-9]{".$min.",".$max."}$",$val))
  131. return true;
  132. return false;
  133. }
  134. /*
  135. -----------------------------------------------------------
  136. 函数名称:isNumberLength($theelement, $min, $max)
  137. 简要描述:检查字符串长度是否符合要求
  138. 输入:mixed (字符串,最小长度,最大长度)
  139. 输出:boolean
  140. 修改日志:------
  141. -----------------------------------------------------------
  142. */
  143. function isEngLength($val, $min, $max)
  144. {
  145. $theelement= trim($val);
  146. if(ereg("^[a-zA-Z]{".$min.",".$max."}$",$val))
  147. return true;
  148. return false;
  149. }
  150. /*
  151. -----------------------------------------------------------
  152. 函数名称:isEnglish
  153. 简要描述:检查输入是否为英文
  154. 输入:string
  155. 输出:boolean
  156. 作者:------
  157. 修改日志:------
  158. -----------------------------------------------------------
  159. */
  160. function isEnglish($theelement)
  161. {
  162. if( ereg("[-].",$theelement) )
  163. {
  164. Return false;
  165. }
  166. Return true;
  167. }
  168. /*
  169. -----------------------------------------------------------
  170. 函数名称:isChinese
  171. 简要描述:检查是否输入为汉字
  172. 输入:string
  173. 输出:boolean
  174. 修改日志:------
  175. -----------------------------------------------------------
  176. */
  177. /*
  178. function isChinese($sInBuf)//有问题的函数
  179. {
  180. $iLen= strlen($sInBuf);
  181. for($i= 0; $i
  182. {
  183. if(ord($sInBuf{$i})>=0x80)
  184. {
  185. if( (ord($sInBuf{$i})>=0x81 && ord($sInBuf{$i})=0x40 && ord($sInBuf{$i+1}) 0x7E && ord($sInBuf{$i+1})
  186. {
  187. if(ord($sInBuf{$i})>0xA0 && ord($sInBuf{$i})
  188. {
  189. //有中文标点
  190. return false;
  191. }
  192. }
  193. else
  194. {
  195. //有日文或其它文字
  196. return false;
  197. }
  198. $i++;
  199. }
  200. else
  201. {
  202. return false;
  203. }
  204. }
  205. return true;
  206. }*/
  207. function isChinese($sInBuf)//正确的函数
  208. {
  209. if (preg_match("/^[-]+$/", $sInBuf)) { //兼容gb2312,utf-8
  210. return true;
  211. }
  212. else
  213. {
  214. return false;
  215. }
  216. }
  217. /*
  218. -----------------------------------------------------------
  219. 函数名称:isDomain($Domain)
  220. 简要描述:检查一个(英文)域名是否合法
  221. 输入:string 域名
  222. 输出:boolean
  223. 修改日志:------
  224. -----------------------------------------------------------
  225. */
  226. function isDomain($Domain)
  227. {
  228. if(!eregi("^[0-9a-z]+[0-9a-z.-]+[0-9a-z]+$", $Domain))
  229. {
  230. Return false;
  231. }
  232. if( !eregi(".", $Domain))
  233. {
  234. Return false;
  235. }
  236. if(eregi("-.", $Domain) or eregi("--", $Domain) or eregi("..", $Domain) or eregi(".-", $Domain))
  237. {
  238. Return false;
  239. }
  240. $aDomain= explode(".",$Domain);
  241. if( !eregi("[a-zA-Z]",$aDomain[count($aDomain)-1]) )
  242. {
  243. Return false;
  244. }
  245. if(strlen($aDomain[0]) > 63 || strlen($aDomain[0])
  246. {
  247. Return false;
  248. }
  249. Return true;
  250. }
  251. /**
  252. * 验证是否日期的函数
  253. * @param unknown_type $date
  254. * @param unknown_type $format
  255. * @throws Exception
  256. * @return boolean
  257. */
  258. function validateDate( $date, $format='YYYY-MM-DD')
  259. {
  260. switch( $format )
  261. {
  262. case 'YYYY/MM/DD':
  263. case 'YYYY-MM-DD':
  264. list( $y, $m, $d ) = preg_split( '/[-./ ]/', $date );
  265. break;
  266. case 'YYYY/DD/MM':
  267. case 'YYYY-DD-MM':
  268. list( $y, $d, $m ) = preg_split( '/[-./ ]/', $date );
  269. break;
  270. case 'DD-MM-YYYY':
  271. case 'DD/MM/YYYY':
  272. list( $d, $m, $y ) = preg_split( '/[-./ ]/', $date );
  273. break;
  274. case 'MM-DD-YYYY':
  275. case 'MM/DD/YYYY':
  276. list( $m, $d, $y ) = preg_split( '/[-./ ]/', $date );
  277. break;
  278. case 'YYYYMMDD':
  279. $y = substr( $date, 0, 4 );
  280. $m = substr( $date, 4, 2 );
  281. $d = substr( $date, 6, 2 );
  282. break;
  283. case 'YYYYDDMM':
  284. $y = substr( $date, 0, 4 );
  285. $d = substr( $date, 4, 2 );
  286. $m = substr( $date, 6, 2 );
  287. break;
  288. default:
  289. throw new Exception( "Invalid Date Format" );
  290. }
  291. return checkdate( $m, $d, $y );
  292. }
  293. /*
  294. -----------------------------------------------------------
  295. 函数名称:isDate
  296. 简要描述:检查日期是否符合0000-00-00
  297. 输入:string
  298. 输出:boolean
  299. 修改日志:------
  300. -----------------------------------------------------------
  301. */
  302. function isDate($sDate)
  303. {
  304. if( ereg("^[0-9]{4}-[][0-9]{2}-[0-9]{2}$",$sDate) )
  305. {
  306. Return true;
  307. }
  308. else
  309. {
  310. Return false;
  311. }
  312. }
  313. /*
  314. -----------------------------------------------------------
  315. 函数名称:isTime
  316. 简要描述:检查日期是否符合0000-00-00 00:00:00
  317. 输入:string
  318. 输出:boolean
  319. 修改日志:------
  320. -----------------------------------------------------------
  321. */
  322. function isTime($sTime)
  323. {
  324. if( ereg("^[0-9]{4}-[][0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}$",$sTime) )
  325. {
  326. Return true;
  327. }
  328. else
  329. {
  330. Return false;
  331. }
  332. }
  333. /*
  334. -----------------------------------------------------------
  335. 函数名称:isMoney($val)
  336. 简要描述:检查输入值是否为合法人民币格式
  337. 输入:string
  338. 输出:boolean
  339. 修改日志:------
  340. -----------------------------------------------------------
  341. */
  342. function isMoney($val)
  343. {
  344. if(ereg("^[0-9]{1,}$", $val))
  345. return true;
  346. if( ereg("^[0-9]{1,}.[0-9]{1,2}$", $val) )
  347. return true;
  348. return false;
  349. }
  350. /*
  351. -----------------------------------------------------------
  352. 函数名称:isIp($val)
  353. 简要描述:检查输入IP是否符合要求
  354. 输入:string
  355. 输出:boolean
  356. 修改日志:------
  357. -----------------------------------------------------------
  358. */
  359. function isIp($val)
  360. {
  361. return(bool) ip2long($val);
  362. }
  363. //-----------------------------------------------------------------------------
  364. /**
  365. * 验证手机号
  366. * @param int $mobile
  367. */
  368. function valid_mobile($mobile){
  369. if(strlen($mobile)!=11) return false;
  370. if(preg_match('/13[0-9]d{8}|15[0|1|2|3|5|6|7|8|9]d{8}|18[0|5|6|7|8|9]d{8}/',$mobile)){
  371. return true;
  372. }else{
  373. return false;
  374. }
  375. }
  376. /**
  377. * 缩略图生成函数,最好使用GD2
  378. *
  379. * @param string $srcFile 要生成缩略图的文件
  380. * @param int $toW 缩略图宽度
  381. * @param int $toH 缩略图高度
  382. * @param string $toFile 缩略图文件
  383. */
  384. function ImageResize($srcFile,$toW,$toH,$toFile=""){
  385. if($toFile==""){ $toFile = $srcFile; }
  386. $info = "";
  387. $data = GetImageSize($srcFile,$info);
  388. switch ($data[2]){
  389. case 1:
  390. if(!function_exists("imagecreatefromgif")){
  391. //echo "你的GD库不能使用GIF格式的图片,请使用Jpeg或PNG格式!返回";
  392. return false;
  393. }
  394. $im = ImageCreateFromGIF($srcFile);
  395. break;
  396. case 2:
  397. if(!function_exists("imagecreatefromjpeg")){
  398. //echo "你的GD库不能使用jpeg格式的图片,请使用其它格式的图片!返回";
  399. return false;
  400. }
  401. $im = ImageCreateFromJpeg($srcFile);
  402. break;
  403. case 3:
  404. $im = ImageCreateFromPNG($srcFile);
  405. break;
  406. }
  407. $srcW=ImageSX($im);
  408. $srcH=ImageSY($im);
  409. $toWH=$toW/$toH;
  410. $srcWH=$srcW/$srcH;
  411. if($toWH
  412. $ftoW=$toW;
  413. $ftoH=$ftoW*($srcH/$srcW);
  414. }
  415. else{
  416. $ftoH=$toH;
  417. $ftoW=$ftoH*($srcW/$srcH);
  418. }
  419. if($srcW>$toW||$srcH>$toH)
  420. {
  421. if(function_exists("imagecreatetruecolor")){
  422. @$ni = ImageCreateTrueColor($ftoW,$ftoH);
  423. if($ni) ImageCopyResampled($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);
  424. else{
  425. $ni=ImageCreate($ftoW,$ftoH);
  426. ImageCopyResized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);
  427. }
  428. }else{
  429. $ni=ImageCreate($ftoW,$ftoH);
  430. ImageCopyResized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);
  431. }
  432. if(function_exists('imagejpeg')) ImageJpeg($ni,$toFile);
  433. else ImagePNG($ni,$toFile);
  434. ImageDestroy($ni);
  435. }else{
  436. ImageDestroy($im);
  437. return false;
  438. }
  439. ImageDestroy($im);
  440. return true;
  441. }
  442. //去除字符串空格
  443. static function strTrim($str)
  444. {
  445. return preg_replace("/s/","",$str);
  446. }
  447. //验证用户名
  448. static function userName($str,$type,$len)
  449. {
  450. $str=self::strTrim($str);
  451. if($len
  452. {
  453. return false;
  454. }else{
  455. switch($type)
  456. {
  457. case "EN"://纯英文
  458. if(preg_match("/^[a-zA-Z]+$/",$str))
  459. {
  460. return true;
  461. }else{
  462. return false;
  463. }
  464. break;
  465. case "ENNUM"://英文数字
  466. if(preg_match("/^[a-zA-Z0-9]+$/",$str))
  467. {
  468. return true;
  469. }else{
  470. return false;
  471. }
  472. break;
  473. case "ALL": //允许的符号(|-_字母数字)
  474. if(preg_match("/^[|-_a-zA-Z0-9]+$/",$str))
  475. {
  476. return true;
  477. }else{
  478. return false;
  479. }
  480. break;
  481. }
  482. }
  483. }
  484. //验证密码长度
  485. static function passWord($min,$max,$str)
  486. {
  487. $str=self::strTrim($str);
  488. if(strlen($str)>=$min && strlen($str)
  489. {
  490. return true;
  491. }else{
  492. return false;
  493. }
  494. }
  495. //验证Email
  496. static function Email($str)
  497. {
  498. $str=self::strTrim($str);
  499. if(preg_match("/^([a-z0-9_]|\-|\.)+@(([a-z0-9_]|\-)+\.){1,2}[a-z]{2,4}$/i",$str))
  500. {
  501. return true;
  502. }else{
  503. return false;
  504. }
  505. }
  506. //验证身份证(中国)
  507. static function idCard($str)
  508. {
  509. $str=self::strTrim($str);
  510. if(preg_match("/^([0-9]{15}|[0-9]{17}[0-9a-z])$/i",$str))
  511. {
  512. return true;
  513. }else{
  514. return false;
  515. }
  516. }
  517. //验证座机电话
  518. static function Phone($type,$str)
  519. {
  520. $str=self::strTrim($str);
  521. switch($type)
  522. {
  523. case "CHN":
  524. if(preg_match("/^([0-9]{3}|0[0-9]{3})-[0-9]{7,8}$/",$str))
  525. {
  526. return true;
  527. }else{
  528. return false;
  529. }
  530. break;
  531. case "INT":
  532. if(preg_match("/^[0-9]{4}-([0-9]{3}|0[0-9]{3})-[0-9]{7,8}$/",$str))
  533. {
  534. return true;
  535. }else{
  536. return false;
  537. }
  538. break;
  539. }
  540. }
  541. /**
  542. * 过滤二维数组的值
  543. * @param 二维数组 $arr_data
  544. * @param 一维数组 $field
  545. * @return Ambigous
  546. */
  547. function getarrayfield($arr_data, $field)
  548. {
  549. $resultArr = array();
  550. foreach ( $arr_data as $key => $value ) {
  551. foreach ($field as $k=>$v)
  552. {
  553. if(array_key_exists($v, $value))//存在才添加
  554. {
  555. $resultArr[$key][$v] =$value[$v] ;
  556. }
  557. else
  558. {
  559. $resultArr[$key][$v]="不存在这个列";
  560. }
  561. }
  562. }
  563. return $resultArr;
  564. }
  565. /**
  566. * 获取客户端IP地址
  567. * @return ip
  568. */
  569. function get_client_ip(){
  570. if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
  571. $ip = getenv("HTTP_CLIENT_IP");
  572. else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
  573. $ip = getenv("HTTP_X_FORWARDED_FOR");
  574. else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
  575. $ip = getenv("REMOTE_ADDR");
  576. else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
  577. $ip = $_SERVER['REMOTE_ADDR'];
  578. else
  579. $ip = "unknown";
  580. return($ip);
  581. }
  582. function get_http_user_agent(){
  583. return isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : "";
  584. }
  585. /**
  586. * 从IP地址获取真实地址
  587. * @param IP $ip
  588. */
  589. function get_address_from_ip($ip){
  590. $url='http://www.youdao.com/smartresult-xml/search.s?type=ip&q=';
  591. $xml=file_get_contents($url.$ip);
  592. $data=simplexml_load_string($xml);
  593. return $data->product->location;
  594. }
  595. /**
  596. * 产生随机字串,可用来自动生成密码 默认长度6位 字母和数字混合
  597. * @param string $len 长度
  598. * @param string $type 字串类型
  599. * 0 字母 1 数字 2 大写字母 3 小写字母 默认混合 4中文
  600. * @param string $addChars 额外字符
  601. * @return string
  602. */
  603. function rand_string($len=6,$type='',$addChars='') {
  604. $str ='';
  605. switch($type) {
  606. case 0:
  607. $chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.$addChars;
  608. break;
  609. case 1:
  610. $chars= str_repeat('0123456789',3);
  611. break;
  612. case 2:
  613. $chars='ABCDEFGHIJKLMNOPQRSTUVWXYZ'.$addChars;
  614. break;
  615. case 3:
  616. $chars='abcdefghijklmnopqrstuvwxyz'.$addChars;
  617. break;
  618. case 4:
  619. $chars = "们以我到他会作时要动国产的一是工就年阶义发成部民可出能方进在了不和有大这主中人上为来分生对于学下级地个用同行面说种过命度革而多子后自社加小机也经力线本电高量长党得实家定深法表着水理化争现所二起政三好十战无农使性前等反体合斗路图把结第里正新开论之物从当两些还天资事队批点育重其思与间内去因件日利相由压员气业代全组数果期导平各基或月毛然如应形想制心样干都向变关问比展那它最及外没看治提五解系林者米群头意只明四道马认次文通但条较克又公孔领军流入接席位情运器并飞原油放立题质指建区验活众很教决特此常石强极土少已根共直团统式转别造切九你取西持总料连任志观调七么山程百报更见必真保热委手改管处己将修支识病象几先老光专什六型具示复安带每东增则完风回南广劳轮科北打积车计给节做务被整联步类集号列温装即毫知轴研单色坚据速防史拉世设达尔场织历花受求传口断况采精金界品判参层止边清至万确究书术状厂须离再目海交权且儿青才证低越际八试规斯近注办布门铁需走议县兵固除般引齿千胜细影济白格效置推空配刀叶率述今选养德话查差半敌始片施响收华觉备名红续均药标记难存测士身紧液派准斤角降维板许破述技消底床田势端感往神便贺村构照容非搞亚磨族火段算适讲按值美态黄易彪服早班麦削信排台声该击素张密害侯草何树肥继右属市严径螺检左页抗苏显苦英快称坏移约巴材省黑武培著河帝仅针怎植京助升王眼她抓含苗副杂普谈围食射源例致酸旧却充足短划剂宣环落首尺波承粉践府鱼随考刻靠够满夫失包住促枝局菌杆周护岩师举曲春元超负砂封换太模贫减阳扬江析亩木言球朝医校古呢稻宋听唯输滑站另卫字鼓刚写刘微略范供阿块某功套友限项余倒卷创律雨让骨远帮初皮播优占死毒圈伟季训控激找叫云互跟裂粮粒母练塞钢顶策双留误础吸阻故寸盾晚丝女散焊功株亲院冷彻弹错散商视艺灭版烈零室轻血倍缺厘泵察绝富城冲喷壤简否柱李望盘磁雄似困巩益洲脱投送奴侧润盖挥距触星松送获兴独官混纪依未突架宽冬章湿偏纹吃执阀矿寨责熟稳夺硬价努翻奇甲预职评读背协损棉侵灰虽矛厚罗泥辟告卵箱掌氧恩爱停曾溶营终纲孟钱待尽俄缩沙退陈讨奋械载胞幼哪剥迫旋征槽倒握担仍呀鲜吧卡粗介钻逐弱脚怕盐末阴丰雾冠丙街莱贝辐肠付吉渗瑞惊顿挤秒悬姆烂森糖圣凹陶词迟蚕亿矩康遵牧遭幅园腔订香肉弟屋敏恢忘编印蜂急拿扩伤飞露核缘游振操央伍域甚迅辉异序免纸夜乡久隶缸夹念兰映沟乙吗儒杀汽磷艰晶插埃燃欢铁补咱芽永瓦倾阵碳演威附牙芽永瓦斜灌欧献顺猪洋腐请透司危括脉宜笑若尾束壮暴企菜穗楚汉愈绿拖牛份染既秋遍锻玉夏疗尖殖井费州访吹荣铜沿替滚客召旱悟刺脑措贯藏敢令隙炉壳硫煤迎铸粘探临薄旬善福纵择礼愿伏残雷延烟句纯渐耕跑泽慢栽鲁赤繁境潮横掉锥希池败船假亮谓托伙哲怀割摆贡呈劲财仪沉炼麻罪祖息车穿货销齐鼠抽画饲龙库守筑房歌寒喜哥洗蚀废纳腹乎录镜妇恶脂庄擦险赞钟摇典柄辩竹谷卖乱虚桥奥伯赶垂途额壁网截野遗静谋弄挂课镇妄盛耐援扎虑键归符庆聚绕摩忙舞遇索顾胶羊湖钉仁音迹碎伸灯避泛亡答勇频皇柳哈揭甘诺概宪浓岛袭谁洪谢炮浇斑讯懂灵蛋闭孩释乳巨徒私银伊景坦累匀霉杜乐勒隔弯绩招绍胡呼痛峰零柴簧午跳居尚丁秦稍追梁折耗碱殊岗挖氏刃剧堆赫荷胸衡勤膜篇登驻案刊秧缓凸役剪川雪链渔啦脸户洛孢勃盟买杨宗焦赛旗滤硅炭股坐蒸凝竟陷枪黎救冒暗洞犯筒您宋弧爆谬涂味津臂障褐陆啊健尊豆拔莫抵桑坡缝警挑污冰柬嘴啥饭塑寄赵喊垫丹渡耳刨虎笔稀昆浪萨茶滴浅拥穴覆伦娘吨浸袖珠雌妈紫戏塔锤震岁貌洁剖牢锋疑霸闪埔猛诉刷狠忽灾闹乔唐漏闻沈熔氯荒茎男凡抢像浆旁玻亦忠唱蒙予纷捕锁尤乘乌智淡允叛畜俘摸锈扫毕璃宝芯爷鉴秘净蒋钙肩腾枯抛轨堂拌爸循诱祝励肯酒绳穷塘燥泡袋朗喂铝软渠颗惯贸粪综墙趋彼届墨碍启逆卸航衣孙龄岭骗休借".$addChars;
  620. break;
  621. case 5:
  622. $chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'.$addChars;
  623. break;
  624. default :
  625. // 默认去掉了容易混淆的字符oOLl和数字01,要添加请使用addChars参数
  626. $chars='ABCDEFGHIJKMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789'.$addChars;
  627. break;
  628. }
  629. if($len>10 ) {//位数过长重复字符串一定次数
  630. $chars= $type==1? str_repeat($chars,$len) : str_repeat($chars,5);
  631. }
  632. if($type == 4){ // 处理中文
  633. $chars = preg_replace('/[^\x{4e00}-\x{9fa5}]/u', '', $chars); // //干掉非utf8中文字符
  634. $chars = chunk_split($chars,3,","); // //每隔3个字符插入一个“,”,转换为数组使用,使用strlen()测出php中一个中文霸占了3个
  635. $re = explode(",",$chars);
  636. shuffle($re);//随机重新排序数组
  637. $chars = implode($re);
  638. unset($re);
  639. $str = mb_substr($chars,0,$len,"utf-8");
  640. }else{
  641. $chars = str_shuffle($chars);
  642. $str = substr($chars,0,$len);
  643. }
  644. return $str;
  645. }
  646. //获取url中参数的值
  647. function geturlval($url,$name)
  648. {
  649. $arr = parse_url($url);
  650. $arr_query = $this->convertUrlQuery($arr['query']);
  651. return $arr_query[$name];
  652. }
  653. function convertUrlQuery($query)
  654. {
  655. $queryParts = explode('&', $query);
  656. $params = array();
  657. foreach ($queryParts as $param)
  658. {
  659. $item = explode('=', $param);
  660. $params[$item[0]] = $item[1];
  661. }
  662. return $params;
  663. }
  664. /**
  665. * 抓取远程图片
  666. *
  667. * @param string $url 远程图片路径
  668. * @param string $filename 本地存储文件名
  669. */
  670. function grabImage($url, $savepath) {
  671. if($url =="") {
  672. return false; //如果 $url 为空则返回 false;
  673. }
  674. $ext_name = strrchr($url, '.'); //获取图片的扩展名
  675. if($ext_name != '.gif' && $ext_name != '.jpg' && $ext_name != '.bmp' && $ext_name != '.png') {
  676. return false; //格式不在允许的范围
  677. }
  678. //获取原图片名
  679. $filename = $savepath.'\'.end(explode('/',$url));
  680. //开始捕获
  681. ob_start();
  682. readfile($url);
  683. $img_data = ob_get_contents();
  684. ob_end_clean();
  685. $size = strlen($img_data);
  686. $local_file = fopen($filename , 'a');
  687. echo $filename;
  688. if(fwrite($local_file, $img_data)== FALSE){
  689. echo '图片下载失败';
  690. }
  691. fclose($local_file);
  692. return $filename;
  693. }
  694. }
  695. ?>
复制代码



相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

616

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

194

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

91

2026.02.13

TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

20

2026.02.13

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

54

2026.02.13

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

29

2026.02.12

雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法
雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法

本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。

15

2026.02.12

豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法
豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法

本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。

598

2026.02.12

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

56

2026.02.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
php初学者入门课程
php初学者入门课程

共10课时 | 0.7万人学习

PHP基础入门课程
PHP基础入门课程

共33课时 | 2.2万人学习

PHP基本语法(玉女心经版)
PHP基本语法(玉女心经版)

共11课时 | 1.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号