ホームページ  >  記事  >  バックエンド開発  >  入力データが正当かどうかを検出するために PHP で一般的に使用されるクラス

入力データが正当かどうかを検出するために PHP で一般的に使用されるクラス

WBOY
WBOYオリジナル
2016-07-25 09:12:24922ブラウズ
  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. }
  8. /*
  9. ----- --- --------------------------------------------------- --- -
  10. 関数名: isNumber
  11. 簡単な説明: 入力が数値かどうかを確認します
  12. 入力: string
  13. 出力: boolean
  14. 修正ログ: ------
  15. ----------- ---------------------------------------------------- ----
  16. */
  17. function isNumber ($val)
  18. {
  19. if(ereg("^[0-9]+$", $val))
  20. return true;
  21. return false;
  22. }
  23. /*
  24. --------- -------------------------------------- ----------
  25. 関数名: isPhone
  26. 簡単な説明: 入力が電話かどうかを確認する
  27. 入力: string
  28. 出力: boolean
  29. 修正ログ: ------
  30. ----- ----------- -------------------------------------- -----------
  31. */
  32. function isPhone( $val)
  33. {
  34. //例: xxx-xxxxxxxx-xxx xxxx-xxxxxxx-xxx ...
  35. if(ereg("^( (0d{2,3})-)(d{7,8}) (-(d{3,}))?$",$val))
  36. return true;
  37. return false;
  38. }
  39. /*
  40. ----------------- ----------------------------- -----------
  41. 関数名: isPostcode
  42. 簡単な説明: 入力が郵便番号かどうかを確認します
  43. 入力: string
  44. 出力: boolean
  45. 修正ログ: ------
  46. --- --------------------- ---------------------------- -----
  47. */
  48. function isPostcode($val)
  49. {
  50. if( ereg("^[0-9]{4,6}$",$val))
  51. return true;
  52. return false;
  53. }
  54. /*
  55. -------------- ---------------------------- ----------
  56. 関数名: isEmail
  57. 簡単な説明: メールアドレスの正当性チェック
  58. 入力: string
  59. 出力: boolean
  60. 変更ログ: ------
  61. --- -------------------- ------------------------------ ----------
  62. */
  63. function isEmail($val,$domain= "")
  64. {
  65. if(!$domain)
  66. {
  67. if( preg_match("/^[a-z0- 9-_.]+@[da-z][.w-]+.[a-z]{ 2,4}$/i", $val) )
  68. {
  69. return true;
  70. }
  71. else
  72. return false;
  73. }
  74. else
  75. {
  76. if( preg_match("/^[a-z0-9-_. ]+@".$domain."$/i", $val) )
  77. {
  78. return true;
  79. }
  80. else
  81. return false;
  82. }
  83. }//end func
  84. /*
  85. ----- ------------------------- ----------------------- ----
  86. 関数名: isName
  87. 簡単な説明: 名前とニックネームの有効性チェック、中国語と英語のみ入力可能
  88. 入力: string
  89. 出力: boolean
  90. 変更ログ: ------
  91. ------- ------------------------- ------------------------- --
  92. */
  93. function isName($val)
  94. {
  95. if( preg_match("/^[x80- xffa-zA-Z0-9]{3,60}$/", $val) )//2008- 7-24
  96. {
  97. return true;
  98. }
  99. return false;
  100. }//end func
  101. / *
  102. ------------------------ ------------------------ -----------
  103. 関数名: isStrLength($theelement, $min, $max )
  104. 簡単な説明: 文字列の長さが要件を満たしているかどうかを確認します
  105. 入力: 混合 (文字列、最小長、最大長) )
  106. 出力: boolean
  107. 変更ログ: ------
  108. --------- ------------------------- ------------------------
  109. */
  110. function isStrLength($val, $min, $max)
  111. {
  112. $theelement= Trim($ val);
  113. if(ereg("^[a-zA-Z0-9]{".$min. ",".$max."}$",$val))
  114. return true;
  115. return false;
  116. }
  117. /*
  118. ------------------ ------------------------- ---------------
  119. 関数名: isNumberLength($theelement, $min, $max)
  120. 簡単な説明: 文字列の長さが要件を満たしているかどうかを確認します
  121. 入力:mixed (string, minimum)長さ、最大長)
  122. 出力: boolean
  123. 変更ログ: ------
  124. ---- ------------------------ ------------------------ -----
  125. */
  126. function isNumLength($val, $min, $max)
  127. {
  128. $theelement = トリム($val);
  129. if(ereg("^[0-9]{".$min .",".$max."}$",$val))
  130. return true;
  131. return false;
  132. }
  133. /*
  134. ------------------ ------------------------ --------------
  135. 関数名: isNumberLength($theelement, $min, $max)
  136. 簡単な説明: 文字列の長さが要件を満たしているかどうかを確認します
  137. 入力:mixed (string, minimum length) 、最大長)
  138. 出力: boolean
  139. 変更ログ: ------
  140. ---- ------------------------- ----------------------- -----
  141. */
  142. 関数 isEngLength($val, $min, $max)
  143. {
  144. $theelement=トリム($val);
  145. if(ereg("^[a-zA-Z]{". $min.",".$max."}$",$val))
  146. return true;
  147. return false;
  148. }
  149. /*
  150. ------------------------------------------- ---------------
  151. 関数名: isEnglish
  152. 簡単な説明: 入力が英語かどうかを確認します
  153. 入力: string
  154. 出力: boolean
  155. 作成者: ------
  156. 修正ログ: - -----
  157. -------------------------------------- ------ ---------------
  158. */
  159. function isEnglish($theelement)
  160. {
  161. if( ereg("[x80-xff].",$theelement) )
  162. {
  163. false を返す ;
  164. }
  165. true を返す;
  166. }
  167. /*
  168. ---------------------------- ---------- --------------------------------------
  169. 関数名: is Chinese
  170. 簡単な説明: 入力が漢字かどうかをチェックします
  171. 入力: string
  172. 出力: boolean
  173. 変更ログ: - -----
  174. ---------------------------- --------------- ---------------
  175. */
  176. /*
  177. function is Chinese($sInBuf)// 問題の関数
  178. {
  179. $iLen= strlen($sInBuf);
  180. for($ i= 0; $i< $iLen; $i++)
  181. {
  182. if(ord($sInBuf{$i})>=0x80)
  183. {
  184. if( (ord($sInBuf{$i})>= 0x81 && ord($sInBuf{$i})=0x40 && ord($sInBuf{$i+1}) 0x7E && ord($sInBuf{$i+1}) {
  185. if(ord($sInBuf{$i}) >0xA0 && ord($sInBuf{$i}) {
  186. //中国語の句読点があります
  187. return false;
  188. }
  189. }
  190. else
  191. {
  192. //日本語または他のテキストがあります
  193. return false;
  194. }
  195. $i++;
  196. }
  197. else
  198. {
  199. return false;
  200. }
  201. }
  202. return true;
  203. }*/
  204. function is Chinese( $sInBuf)//正しい関数
  205. {
  206. if (preg_match("/ ^[x7f-xff]+$/", $sInBuf)) { //gb2312,utf-8 と互換性あり
  207. return true;
  208. }
  209. else
  210. {
  211. return false;
  212. }
  213. }
  214. /*
  215. --- --------------------------------- ------ ------
  216. 関数名: isDomain($Domain)
  217. 簡単な説明: (英語) ドメイン名が正当かどうかを確認します
  218. 入力: 文字列ドメイン名
  219. 出力: boolean
  220. 変更ログ: -------
  221. --- ----------------------------- ---------- ------
  222. */
  223. function isDomain($Domain)
  224. {
  225. if(!eregi("^[0- 9a-z]+[0-9a-z.-]+[0-9a-z ]+$", $Domain))
  226. {
  227. Return false;
  228. }
  229. if( !eregi(".", $Domain ))
  230. {
  231. Return false;
  232. }
  233. if(eregi("-.", $Domain) or eregi("--", $Domain) or eregi("..", $Domain) or eregi(" .-", $Domain))
  234. {
  235. Return false;
  236. }
  237. $aDomain=explode(".",$Domain);
  238. if( !eregi("[a-zA-Z]",$aDomain[ count($aDomain)-1]) )
  239. {
  240. Return false;
  241. }
  242. if (strlen($aDomain[0]) > 63 || strlen($aDomain[0]) {
  243. Return false;
  244. }
  245. Return true;
  246. }
  247. /**
  248. * 日付を確認する関数
  249. * @paramknown_type $date
  250. * @paramknown_type $format
  251. * @throws Exception
  252. * @return boolean
  253. */
  254. function validateDate( $date, $format='YYYY-MM-DD')
  255. {
  256. switch( $format )
  257. {
  258. case 'YYYY/MM/DD':
  259. case 'YYYY-MM-DD':
  260. list( $y, $m, $d ) = preg_split( '/[-./ ]/', $date );
  261. Break;
  262. case 'YYYY/DD/MM':
  263. case 'YYYY-DD-MM':
  264. list( $y, $d, $m ) = preg_split( '/[-./ ]/', $date );
  265. Break;
  266. case 'DD-MM-YYYY':
  267. case 'DD/MM/ YYYY':
  268. list( $d, $m, $y ) = preg_split( '/[-./ ]/', $日付 );
  269. ブレーク;
  270. ケース 'MM-DD-YYYY':
  271. ケース 'MM /DD/YYYY':
  272. list( $m, $d, $y ) = preg_split( '/[-./ ]/ ', $date );
  273. ブレーク;
  274. case 'YYYYMMDD':
  275. $y = substr ( $date, 0, 4 );
  276. $m = substr( $date, 4, 2 );
  277. $d = substr( $date, 6, 2 );
  278. ブレーク;
  279. case 'YYYYDDMM':
  280. $y = substr( $date, 0, 4 );
  281. $d = substr( $date, 4, 2 );
  282. $m = substr( $date, 6, 2 );
  283. Break;
  284. デフォルト:
  285. throw new Exception ( "無効な日付形式" );
  286. }
  287. return checkdate( $m, $d, $y );
  288. }
  289. /*
  290. ------------------ ----------------------------- -----------
  291. 関数名: isDate
  292. 簡単な説明: 日付が0000-00-00と一致するかを確認します
  293. 入力: string
  294. 出力: boolean
  295. 修正ログ: ------
  296. - ------------------------ ---------------------------- ------------
  297. */
  298. function isDate($sDate)
  299. {
  300. if( ereg("^[0-9]{4}-[][0-9]{2} -[0-9]{2}$",$sDate) )
  301. {
  302. true を返す;
  303. }
  304. else
  305. {
  306. false を返す;
  307. }
  308. }
  309. /*
  310. -------------------------------------- ---- -------------
  311. 関数名: isTime
  312. 簡単な説明: 日付が 0000-00-00 00:00:00 と一致するかどうかを確認します
  313. 入力: string
  314. 出力: boolean
  315. 変更履歴: -- ----
  316. ----------------------------------------------------- ----- ---------------
  317. */
  318. function isTime($sTime)
  319. {
  320. if( ereg("^[0-9]{4}-[] [0-9]{ 2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}$",$sTime) )
  321. {
  322. true を返す
  323. }
  324. else
  325. {
  326. false を返す;
  327. }
  328. }
  329. /*
  330. ------------------------ --------- ----------------------------
  331. 関数名: isMoney($val)
  332. 簡単な説明:入力値が正しい RMB 形式であるかどうかを確認します
  333. 入力: string
  334. 出力: boolean
  335. 変更ログ: ------
  336. --------------------- ----------- -----------------------------
  337. */
  338. 関数 isMoney($val)
  339. {
  340. if(ereg("^[0-9 ]{1,}$", $val))
  341. return true;
  342. if( ereg("^[0-9]{1,}.[0-9 ]{1,2}$", $val) )
  343. return true;
  344. return false;
  345. }
  346. /*
  347. ---------------------- ------------ ------------------------
  348. 関数名: isIp($val)
  349. 簡単な説明: Check入力IPが要件を満たしているか
  350. 入力: string
  351. 出力: boolean
  352. 変更ログ:------
  353. ------------------------ ------------------ ---------------------
  354. */
  355. 関数 isIp($val)
  356. {
  357. return(bool) ip2long($val);
  358. }
  359. //- -------------------------------- ----------------------------------------------------
  360. /* *
  361. * 携帯電話番号を確認してください
  362. * @param int $mobile
  363. */
  364. function valid_mobile($mobile){
  365. if(strlen ($mobile)!=11) return false;
  366. 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)){
  367. return true;
  368. }else{
  369. return false;
  370. }
  371. }
  372. /* *
  373. * サムネイル生成機能、GD2を使うのがベスト
  374. *
  375. * @param string $srcFile サムネイルを生成するファイル
  376. * @param int $toW サムネイルの幅
  377. * @param int $toH サムネイルの高さ
  378. * @param string $ toFile サムネイルファイル
  379. */
  380. function ImageResize($srcFile,$toW,$toH​​,$toFile=""){
  381. if($toFile= =""){ $toFile = $srcFile; }
  382. $info = "" ;
  383. $data = GetImageSize($srcFile,$info);
  384. switch ($data[2]){
  385. case 1:
  386. if(! function_exists("imagecreatefromgif")){
  387. //echo "GD ライブラリでは使用できません。GIF 形式の画像については、Jpeg または PNG 形式を使用してください。 return";
  388. return false;
  389. }
  390. $im = ImageCreateFromGIF($srcFile);
  391. Break;
  392. case 2:
  393. if ( !function_exists("imagecreatefromjpeg")){
  394. //echo "GD ライブラリでは jpeg 形式の画像を使用できません。他の形式の画像を使用してください。default";
  395. return false;
  396. }
  397. $im = ImageCreateFromJpeg($srcFile);
  398. Break;
  399. case 3:
  400. $ im = ImageCreateFromPNG($srcFile);
  401. ブレーク;
  402. }
  403. $srcW=ImageSX($im);
  404. $srcH=ImageSY($im);
  405. $toWH=$toW/$toH;
  406. if($toWH< ;=$srcWH){
  407. $ftoW=$toW;
  408. $ftoH=$ftoW*($srcH/$srcW);
  409. }
  410. else{
  411. $ftoH=$toH;
  412. $ ftoW=$ftoH*($srcW) /$srcH);
  413. }
  414. if($srcW>$toW||$srcH>$toH)
  415. {
  416. if(function_exists("imagecreateTrueColor")){
  417. @$ni = ImageCreateTrueColor ($ftoW, $ftoH);
  418. if($ni) ImageCopyResampled($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);
  419. else{
  420. $ni= ImageCreate ( $ftoW , $ftoH )
  421. ImageCopyResize ( $ ni , $ im , 0 , 0 , 0 , 0 , $ ftoW , $ photo H , $ srcW , $ srcH ) ($ftoW, $ftoH);
  422. ImageCopyResize($ni,$im,0, 0,0,0,$ftoW,$ftoH,$srcW,$srcH);
  423. }
  424. if(function_exists('imagepeg'));
  425. else ImagePNG($ni,$toFile); );
  426. ImageDestroy($ni);
  427. }else{
  428. ImageDestroy($im);
  429. return false;
  430. }
  431. ImageDestroy($im) ;
  432. return true;
  433. }
  434. // パブリック静的関数 strTrim ($str)
  435. {
  436. return preg_replace("/s/","",$str);
  437. }
  438. //; 静的関数 userName($str,$type,$len)
  439. {
  440. $str=self ::strTrim($str);
  441. if($len {
  442. return false;
  443. }else {
  444. switch ( $type )
  445. {
  446. case " EN " ://default
  447. if ( preg_match ( " / ^ [ a - zA - Z ] + $ / " , $str ))
  448. {
  449. return true ;
  450. } else {
  451. return false ; }
  452. case " ENNUM " _ _ _ _ _ _
  453. } else
  454. return false ; )
  455. {
  456. return true ;
  457. }
  458. case " ALL " : // set preg_match ( | - _ preg_match )
  459. if ( " / ^ [| -_a -zA-Z0-9]+$/",$str))
  460. {
  461. return true;
  462. }else{
  463. return false;
  464. }
  465. Break;
  466. }
  467. }
  468. }
  469. // 静的ロック関数を作成 passWord($min,$max,$size)
  470. {
  471. $size=self::sizeTrim($size);
  472. if(size($size)>=$min &&size($size) )<=$ max)
  473. {
  474. return true ;
  475. } else {
  476. return false ; }
  477. }
  478. // key Email
  479. static function Email ( $str )
  480. {
  481. $str = self :: strTrim ( $str );
  482. if(preg_match("/^([a-z0-9_]|\-|\.)+@(([a-z0-9_]|\-)+\.){1, 2}[a-z] {2.4}$/i",$str))
  483. {
  484. return true;
  485. }else{
  486. return false;
  487. }
  488. }
  489. // IDCard($str)
  490. 静的関数を作成idCard($str )
  491. {
  492. $str=self::strTrim($str);
  493. if(preg_match("/^([0-9]{15}|[0-9]{17}[0-9a -z]) $/i", $str))
  494. {
  495. return true;
  496. }else{
  497. return false;
  498. }
  499. }
  500. //キーワード静的関数を指定 Phone($type,$str)
  501. {
  502. $str = self :: strTrim ( $str )
  503. switch ( $type )
  504. {
  505. case " CHN " :
  506. if ( preg_match ( " / ^ ( [ 0 - 9 ] { 3 } | 0 [ 0 - 9 ] { }) - [ 0 - 9 ] { 7 , 8 } $ / " , $ str ) )
  507. {
  508. return true ;
  509. } else {
  510. return false ;
  511. }
  512. Break ;
  513. case " INT " :
  514. if ( preg_match ("/^[0-9]{4}-([0-9]{3}|0[0-9]{3})-[0-9]{7.8}$/",$str ) )
  515. {
  516. return true;
  517. }else{
  518. return false;
  519. }
  520. Break;
  521. }
  522. }
  523. /**
  524. * 二次元配列の値をフィルター
  525. * @param 二次元配列 $arr_data
  526. * @param 一次元配列 $field
  527. * @return Ambigous
  528. */
  529. function getarrayfield($arr_data, $field)
  530. {
  531. $resultArr = array();
  532. foreach($arr_data as $key => $value ) {
  533. foreach ($field as $k=>$v)
  534. {
  535. if(array_key_exists($v, $value))//無効な配列
  536. {
  537. $resultArr[$key][$v] = $value[$v] ;
  538. }
  539. else
  540. {
  541. $resultArr[$key][$v]="return $resultArr;
  542. };
  543. /**
  544. * クライアント IP アドレスを取得します
  545. * @return ip
  546. */
  547. function get_client_ip(){
  548. if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
  549. $ip = getenv("HTTP_CLIENT_IP");
  550. else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
  551. $ip = getenv("HTTP_X_FORWARDED_FOR");
  552. else if (getenv("REMOTE_ADDR") && strcasecmp(getenv) ("REMOTE_ADDR"), "unknown"))
  553. $ip = getenv("REMOTE_ADDR");
  554. else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER[ 'REMOTE_ADDR'], "unknown"))
  555. $ip = $_SERVER['REMOTE_ADDR'];
  556. else
  557. $ip = "unknown";
  558. return($ip);
  559. }
  560. function get_http_user_agent(){
  561. return isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : "";
  562. }
  563. /**
  564. * IPアドレスから実際のアドレスを取得します
  565. * @param IP $ip
  566. */
  567. function get_address_from_ip($ip){
  568. $url='http://www.youdao.com/smartresult-xml/ search.s?type=ip&q=';
  569. $xml=file_get_contents($url.$ip);
  570. $data=simplexml_load_string($xml);
  571. return $data->product->location;
  572. }
  573. /**
  574. * パスワードの自動生成に使用できるランダムな文字列を生成します。デフォルトの長さは 6 文字と数字の組み合わせです
  575. * @param string $len length
  576. * @param string $type string type
  577. * 0 文字 1 数字大文字 2 文字 小文字 3 文字 デフォルト混合 4 中国語
  578. * @param string $addChars 余分な文字
  579. * @return string
  580. */
  581. function rand_string($len=6,$type='',$addChars='') {
  582. $str ='';
  583. switch($type) {
  584. case 0 :
  585. $chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.$addChars;
  586. ブレーク;
  587. ケース 1:
  588. $chars= str_repeat('0123456789',3);
  589. ブレーク;
  590. ケース 2:
  591. $chars='ABCDEFGHIJKLM NOPQRSTUVWXYZ'.$addChars;
  592. ブレーク;
  593. ケース 3:
  594. $chars='abcdefghijklmnopqrstuvwxyz'.$addChars;
  595. ブレーク;
  596. ケース 4:
  597. $chars = "私たちは、労働者が不和や大きな問題の中で進歩できるように、それを行うときは国産のものを移さなければならないと考えています。この分野の同業者は、革命の後、多くの子供たちが追加されたと述べました。社会と送電線の力、質の高い長期政党、そして根深い法律が水の物理学と化学闘争を代表するものであり、反性的・反身体的協力のロードマップは次のようなものに焦点を当てている。最後に話し合うことと新たに話し合うこと、タレントチームの2つのポイントから、考え方と内的要因に焦点を当て、メンバーとカルマに迫り、グループの果実期を平準化することにつながります。しかし、形、想像力、心のすべてが変化する場合、それは最も外的なものであり、間の関係の5つの解釈を見ません。 Mi Qun の頭は 4 本の道路だけを意味し、サブテキストは比較的文法的であると認識されていますが、主導的な力は受け座に流れ込み、原油は地区の建設検査活動に言及するために問題とされています。多くの教師は、張九曜が統一統一体制を確立し、羲之が再選され、奇面山程白宝の調整が行われ、経営が変わると見られている。病気が修復され、症状がわかります。風が終わった後、私は南広、老岑に戻り、トラックの生産と供給のセクションを計画しました。温度と設置が不明なシャフト研究の情報伝達、金メダルの収集、ボーダークリアと最終審査が迅速に阻止されました。技術的条件、工場は海から隔離されなければならない、そして子供の青少年証明書は低く、国際的な8つの試験規定を超えています、郡の兵士は堅実で、何千もの勝利を導くことができ、細かい影、ジバイグリッド効果、空を押します。ブレードレート、Yandeを選択、違いを確認、半分の敵、フィルムを開始、サウンドを適用、Huajueを収集、赤と名付けられ、均一な薬マークを継続し、テスターを保存するのは困難です、ボディタイトな液体システム、正確。重量角、寸法縮小板、徐破術、底床田潜在力、心意気、和村構成、容姿、ヤモ家火節、相応値、美貌、黄一彪、早朝勤務麦刈り文字、漕ぐ音張美は後草に危害を加え、市はカタツムリを厳しく検査し、周囲の食品の放射性物質に関する一般的な話をします。十分なショートストローク剤 Xuanhuan Luo Shou Chi wave Cheng Fen Jianfu 魚とテスト彫刻付き 十分な完全な夫の損失に依存して、枝細菌の周囲保護をカプセル化して促進します 岩石エンジニア Qu Chunyuan スーパーネガティブサンドシーリング交換 Taimo 貧困削減 陽江分析 Mu Mu Yan Qi Chao Medical学校Gu Ni Dao Song Ting Wei Shu Hua Station別のWei Zi Gu GangはLiu Wei Lue Fan Gong A Kuaiを書きました一定のメリットセットの友達はロールを巻き戻して法を作成することに制限されています雨はGuyuanが有利をブロードキャストして占領するのを手伝います。毒のサークル、ウェイジの訓練と制御は、雲を刺激し、穀物を割ります 後期シルクガール 分散溶接 ゴンジュ・インレンチェ バウンスビジネス ビジュアルアート破壊版 嘘ゼロルーム 光血二重欠乏ポンプ チャジュエフーシティチョンスプレー土壌 ジャンフージュリー。ワンパン・マジ・ションは罠にかかっているようだ、ゴン・イージョウが離陸してスレーブ・サイド・ランを届ける、カバーが手を振って星に触れ、昇進する役人を送った広い冬の章はまだ現れていません。鉱山村は成熟した安定した勝利の責任を負っています。 ハードプライスは、厚い羅尼ピスイエッグボックスパームオキシジェンラブストップキャンプ終了ガンメンチェンを待っています。疲れきったロシアのシュリンクサンドリトリートチェンチャレンジ装置搾取ロータリー賦課金の洞窟を扱う細胞を運ぶまだええ新鮮なバーカードの厚い導入弱さによる掘削足は塩、曇り、霧を恐れています、観氷街、莱北放散腸、フージー、ルイ、驚いて、数秒絞って、ぶら下がっているムーランセン、砂糖、聖凹型陶器の詩、後期カイコ、億の瞬間、カンズンム、庭のトーンで額装されている、香、肉の兄弟ウーミンフイ、コンパイルと印刷を忘れています。傷を広げてコアエッジを露出させると、非常に高速で異質な、夜の街、シリンダークリップ、蘭英溝Bを読むことができます。歯の芽まで、そしてタイルはゲストを呼び出すために青銅の端を吹き飛ばす傾向があり、干ばつに目覚め、脳を啓発し、宝物を貫通し、炉の殻に亀裂をあえて入れ、硫黄の石炭を歓迎します。鋳物と棒、薄い十日間を探索する、幸運、エチケットの選択にふける、残留雷を鎮めることを望む、煙を広げる、純粋、徐々に耕し、沼地を走り、ゆっくりと植える、ルー・チファン 状況は好転したダウン、Xichiは破滅し、船は破滅し、偽の光は夫のZhehuaiに託され、切り取られて貢物を捧げ、腹が記録され、女性は悪であり、。村は危険にさらされ、鐘は揺れ、ハンドルについて議論され、竹の谷は売られ、橋は混乱に陥り、オーベルは垂直の道路に突進し、額は切り落とされ、野生の遺跡は静かになり、クラスは絞首刑にされた、町は繁栄し、耐久力がサポートされ、鍵が返され、フーチンはモーの周りに集まり、忙しく踊り、谷礁陽湖の釘核の音に遭遇し、音を壊し、洪水と死を避けるためにランプを伸ばし、答えます勇敢な皇帝、劉海傑、甘ヌオ、洪水に襲われる西安島、大砲がスポットを注ぐ、精霊の卵の理解、子供が乳房を解放する、巨人のプライベートバンクイージンタンレイジュンモールドドゥレレは曲がりを分けた趙シャオ・フー・トン・フォン・リン・チャイ・ファンウーは上定秦にジャンプしたシャオ・チャイ・リャンはアルカリ特別な丘を打ち破り、ブレードドラマの山を掘りました彼彼チェ・ヘンチンの映画は事件誌に掲載されました苗木は遅い突出カット四川省雪の鎖の漁師が胡羅富ボーリーグに面して、陽宗角彩旗フィルターを買う、シリコンカーボンストック、座る水蒸気の凝縮、実際に閉じ込められる銃、李がリスクを救うダークホール、犯罪チューブ、君の歌、アーク爆発、瘴気、トゥ・ウェイジン、アームバリア、茶色の土地、ああ、ジャンズン・ドゥーバ・モーが到着するサンポの縫製警察が氷を拾う カンボジアの口 何の米プラスチックメール 趙の叫びパッド ダンドゥの耳のプレーニング タイガーペン 薄いクンランサ お茶が落ちる 浅いおまんこを覆う ルンニアントン 濡れた袖のビーズ 女母 紫のオペラハンマー 衝撃的な年齢、美しい顔、刑務所前線、暴君の疑惑、激しい告訴、突然の災害、喬唐がニュースを漏らし、沈む塩素廃棄物の茎、像を強奪した男たちも歌うことに忠実で、孟濤は逮捕され、呉志丹は許した裏切られる裏切り者、タッチ、サビ、スイープ、グラス、バオシンイェ、ジャンミジ、ジャン・カルシウム、ショルダー、テン・ドライ、投げられたレール、ミックス・パパ、誘惑に従う、願い、励ます、ワイン・ロープ、貧しい池、ドライ・バブル・バッグ。 、飼料アルミニウム、軟運河、常習的貿易、排泄物、包括的な壁、トレンド、インク、妨げるチーニ孫リンリンは騙されて借りました ".$addChars;
  598. break;
  599. case 5:
  600. $chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'.$addChars;
  601. Break;
  602. default :
  603. // 混同されやすい文字 oOLl とデフォルトで削除される数値 01、追加するには addChars パラメーターを使用してください
  604. $chars='ABCDEFGHIJKMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789'.$addChars;
  605. Break;
  606. }
  607. if($len>10 ) {//桁数が長すぎるため、文字列が一定回数繰り返されます
  608. $chars= $type==1? str_repeat($chars,$len) : str_repeat($ chars,5);
  609. }
  610. if($type == 4){ // 中国語の処理
  611. $chars = preg_replace('/[^\x{4e00}-\x{9fa5}]/u', '' , $chars); // / /utf8 以外の中国語文字を削除します
  612. $chars = chunk_split($chars,3,","); // //3 文字ごとに「,」を挿入し、配列、strlen() を使用して PHP を測定します 1 つの中国語が 3 を占めます
  613. $re =explode(",",$chars);
  614. shuffle($re);//配列をランダムに並べ替えます
  615. $chars = implode($re) ;
  616. unset($re);
  617. $str = mb_substr($chars,0,$len,"utf-8");
  618. }else{
  619. $chars = str_shuffle($chars);
  620. $str = substr($ chars,0,$len);
  621. }
  622. return $str;
  623. }
  624. // url
  625. 関数のパラメータの値を取得 geturlval($url,$name)
  626. {
  627. $arr = parse_url($ url);
  628. $arr_query = $this-> ;convertUrlQuery($arr['query']);
  629. return $arr_query[$name];
  630. }
  631. function ConvertUrlQuery($query)
  632. {
  633. $queryParts =explode ('&', $query);
  634. $params = array();
  635. foreach ($queryParts as $param)
  636. {
  637. $item =explode('=', $param);
  638. $params[$item[ 0]] = $item[1];
  639. }
  640. return $params;
  641. }
  642. /**
  643. * リモート画像を取得します
  644. *
  645. * @param string $url リモート画像パス
  646. * @param string $filename ローカルストレージファイル名
  647. */
  648. functiongrabImage($url, $savepath) {
  649. if($url =="") {
  650. return false; // $url が空の場合、return false;
  651. }
  652. $ext_name = strrchr($url, '.') // 画像の拡張子を取得します
  653. if($ext_name != '. gif' && $ext_name != '.jpg' && $ ext_name != '.bmp' && $ext_name != '.png') {
  654. return false
  655. }
  656. //元の画像名を取得します
  657. $filename = $savepath.'\'.end (explode('/',$url));
  658. //キャプチャ開始
  659. ob_start();
  660. readfile($url);
  661. $img_data = ob_get_contents();
  662. ob_end_clean();
  663. $size = strlen($img_data );
  664. $local_file = fopen($filename, 'a');
  665. echo $filename;
  666. if(fwrite($local_file, $img_data)= = FALSE){
  667. echo '画像のダウンロードに失敗しました';
  668. }
  669. fclose( $local_file);
  670. return $filename;
  671. }
  672. }
  673. ?>
コードをコピー



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。