PHP に付属の関数ライブラリは非常に強力ですが、日常の多くの状況では、特定の機能や要件を達成するために独自のカスタム関数を作成する必要があります。以下に、URL 文字列のハイパーリンクへの変換、ディレクトリの内容の一覧表示、電子メール アドレスの検証など、いくつかの一般的なニーズを解決する、より実用的なカスタム関数を集めました。
1. PHP はランダムな文字列を読み取ることができます
辞書の単語に近い、実用的でパスワード検証機能を備えた可読性の高い文字列を作成します。
function readable_random_string($length = 6){ $conso=array("b","c","d","f","g","h","j","k","l", "m","n","p","r","s","t","v","w","x","y","z"); $vocal=array("a","e","i","o","u"); $password=""; srand ((double)microtime()*1000000); $max = $length/2; for($i=1; $i<=$max; $i++) { $password.=$conso[rand(0,19)]; $password.=$vocal[rand(0,4)]; } return $password; }
2. PHP はランダムな文字列を生成します
読み取り可能な文字列が必要ない場合は、代わりにこの関数を使用して、ユーザーのランダムなパスワードなどとしてランダムな文字列を作成します。
function generate_rand($l){ $c= "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; srand((double)microtime()*1000000); for($i=0; $i < $l; $i++) { $rand.= $c[rand()%strlen($c)]; } return $rand; }
3. PHP でエンコードされた電子メール アドレス
このコードを使用すると、任意の電子メール アドレスを HTML 文字エンティティ にエンコードして、スパム プログラムによって収集されるのを防ぐことができます。
function encode_email($email='info@domain.com', $linkText='Contact Us', $attrs ='class="emailencoder"' ) { // remplazar aroba y puntos $email = str_replace('@', '@', $email); $email = str_replace('.', '.', $email); $email = str_split($email, 5); $linkText = str_replace('@', '@', $linkText); $linkText = str_replace('.', '.', $linkText); $linkText = str_split($linkText, 5); $part1 = '<、a href="ma'; $part2 = 'ilto:'; $part3 = '" '. $attrs .' >'; $part4 = '<、/a>'; $encoded = '<、script type="text/javascript">'; $encoded .= "document.write('$part1');"; $encoded .= "document.write('$part2');"; foreach($email as $e) { $encoded .= "document.write('$e');"; } $encoded .= "document.write('$part3');"; foreach($linkText as $l) { $encoded .= "document.write('$l');"; } $encoded .= "document.write('$part4');"; $encoded .= '<、/script>'; return $encoded; }
4. PHP 検証電子メール アドレス
電子メール検証は、おそらく フォーム検証 で最もよく使用される Web ページです。このコードは、電子メール アドレスの検証に加えて、DNS の MX レコードをチェックすることもできます。電子メール ドメインが属しているため、電子メール検証が有効になります。この機能はさらに強力です。
function is_valid_email($email, $test_mx = false) { if(eregi("^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $email)) if($test_mx) { list($username, $domain) = split("@", $email); return getmxrr($domain, $mxrecords); } else return true; else return false; }
5. PHP ディレクトリの内容のリスト
function list_files($dir) { if(is_dir($dir)) { if($handle = opendir($dir)) { while(($file = readdir($handle)) !== false) { if($file != "." && $file != ".." && $file != "Thumbs.db"){ echo '<、a target="_blank" href="'.$dir.$file.'">'.$file.'<、/a><、br>'."\n"; } } closedir($handle); } } }
6. PHP ディレクトリの破棄
ディレクトリをその内容も含めて削除します。
function destroyDir($dir, $virtual = false) { $ds = DIRECTORY_SEPARATOR; $dir = $virtual ? realpath($dir) : $dir; $dir = substr($dir, -1) == $ds ? substr($dir, 0, -1) : $dir; if (is_dir($dir) && $handle = opendir($dir)) { while ($file = readdir($handle)) { if ($file == '.' || $file == '..') { continue; } elseif (is_dir($dir.$ds.$file)) { destroyDir($dir.$ds.$file); } else { unlink($dir.$ds.$file); } } closedir($handle); rmdir($dir); return true; } else { return false; } }
7. PHP は JSON データを解析します
オープン API を通じてデータを提供する Twitter などの最も一般的な Web サービスと同様に、PHP は、JSON、XML などの API データのさまざまな送信形式を解析する方法を常に認識しています。
$json_string='{"id":1,"name":"foo","email":"foo@foobar.com","interest":["wordpress","php"]} '; $obj=json_decode($json_string); echo $obj->name; //prints foo echo $obj->interest[1]; //prints php
8. PHP で XML データを解析する
//xml string $xml_string=" <、users> <、user id='398'> <、name>Foo<、/name> <、email>foo@bar.com<、/name> <、/user> <、user id='867'> <、name>Foobar<、/name> <、email>foobar@foo.com<、/name> <、/user> <、/users>"; //load the xml string using simplexml $xml = simplexml_load_string($xml_string); //loop through the each node of user foreach ($xml->user as $user) { //access attribute echo $user['id'], ' '; //subnodes are accessed by -> operator echo $user->name, ' '; echo $user->email, '<、br />'; }
9. PHP でログの省略形を作成する
使いやすいログの省略形を作成します。
function create_slug($string){ $slug=preg_replace('/[^A-Za-z0-9-]+/', '-', $string); return $slug; }
10. PHP はクライアントの実際の IP アドレスを取得します
この関数は、ユーザーがプロキシ サーバーを使用している場合でも、ユーザーの実際の IP アドレスを取得します。
function getRealIpAddr() { if (!emptyempty($_SERVER['HTTP_CLIENT_IP'])) { $ip=$_SERVER['HTTP_CLIENT_IP']; } elseif (!emptyempty($_SERVER['HTTP_X_FORWARDED_FOR'])) //to check ip is pass from proxy { $ip=$_SERVER['HTTP_X_FORWARDED_FOR']; } else { $ip=$_SERVER['REMOTE_ADDR']; } return $ip; }
11. PHP必須ファイルダウンロード
は、ユーザーに必須のファイルダウンロード機能を提供します。
りー以上がphp: いくつかの実用的なカスタム関数をまとめます。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。