ホームページ  >  記事  >  バックエンド開発  >  見落とされている PHP 関数の一部 (整理)

見落とされている PHP 関数の一部 (整理)

WBOY
WBOYオリジナル
2016-08-08 09:29:381421ブラウズ

出典: http://www.gracecode.com/posts/3013.html

実際に知る必要はありませんが、実際、私たちが使い慣れている PHP にはまだ発見されていない良い点がたくさんあります。と。この記事を見たとき、何度も涙してしまいました、ぜひ自分なりに整理してみます。

sys_getloadavg()

この関数は、現在のシステムの負荷平均情報を返します(もちろん、 Windows では適用されません)、詳細なドキュメントについては、PHP の関連ドキュメントを参照してください。ドキュメントにはサンプルコードがあり、基本的にその使用方法がわかります。

<codecourier new word-wrap:break-word font-size:0.9em overflow-x:auto><?php $load = sys_getloadavg(); if ($load[0] > 80) { header('HTTP/1.1 503 Too busy, try again later'); die('Server too busy. Please try again later.'); } <p>PS、「残念ながら」お使いの PHP 環境にこの関数がない場合は、</p> <precourier new white-space:pre-wrap word-wrap:break-word border:1px solid rgb font-size:0.9em overflow-x:auto color:rgb background-color:rgb><codecourier new word-wrap:break-word font-size:0.9em overflow-x:auto>if (!function_exists('sys_getloadavg')) { function sys_getloadavg() { $loadavg_file = '/proc/loadavg'; if (file_exists($loadavg_file)) { return explode(chr(32),file_get_contents($loadavg_file)); } return array(0,0,0); } } <p> 経由で次のコードを使用することを検討してください。この機能を適切に使用すると、サーバーへの負荷を軽減できます。 </p> <p>pack()</p> <p>pack バイナリ文字列を圧縮するために使用される unpack と呼ばれる対応する関数もあります。記事内の著者の例は非常に明確です</p> <precourier new white-space:pre-wrap word-wrap:break-word border:1px solid rgb font-size:0.9em overflow-x:auto color:rgb background-color:rgb><codecourier new word-wrap:break-word font-size:0.9em overflow-x:auto>$pass_hash = pack("H*", md5("my-password")); <p> PHP5 を使用している場合は、次のように直接実行できます</p>。 <precourier new white-space:pre-wrap word-wrap:break-word border:1px solid rgb font-size:0.9em overflow-x:auto color:rgb background-color:rgb><codecourier new word-wrap:break-word font-size:0.9em overflow-x:auto>$pass_hash = md5("my-password", true); // PHP 5+ <p>これを行う利点 1 つは、文字列の保存スペースを削減することです (どれくらい節約できるでしょうか? これは別の記事になる可能性があります)。 </p> <p>これは</p> <precourier new white-space:pre-wrap word-wrap:break-word border:1px solid rgb font-size:0.9em overflow-x:auto color:rgb background-color:rgb><codecourier new word-wrap:break-word font-size:0.9em overflow-x:auto><?php function pack_array($v,$a) { return call_user_func_array(pack,array_merge(array($v),(array)$a)); } </code>

cal_days_in_month()を介して配列をパックできるサンプルコードです

​​

この関数は、次のように指定された月の日数を直接返すことができます

<codeCourier New',sans-serif; word-wrap:break-word; font-size:0.9em; overflow-x:auto">$days = cal_days_in_month(CAL_GREGORIAN, date("m"), date("Y")); // 31 </code>

関数を実装していることを保証できます似たような関数を自分で使ってみてください:^)

_()

まあ、これは確かに PHP 関数です (これは最も短い PHP 組み込み関数でもあります)。 はその「ニックネーム」であり、その正式な名前は <codeCourier New',white-space:pre-wrap; font-size:0.9em; ; overflow-x:auto">gettext()。_() 是它的「小名」,它的大名是 gettext()。

写过 Wordpress 皮肤的朋友会了解 __() 以及 _e()

WordPress スキンを作成した友人は、__() および <preCourier New',sans-serif; white-space:pre-wrap; word-wrap:break-word; border:1px solid rgb(221,221,221); font-size:0.9em; overflow-x:auto; color:rgb(56,52,43); background-color:rgb(238,238,238)">&lt;codeCourier New',sans-serif; word-wrap:break-word; font-size:0.9em; overflow-x:auto&quot;&gt;// Set language to German setlocale(LC_ALL, 'de_DE'); // Specify location of translation tables bindtextdomain(&quot;myPHPApp&quot;, &quot;./locale&quot;); // Choose domain textdomain(&quot;myPHPApp&quot;); echo _(&quot;Have a nice day&quot;); &lt;/code&gt;</pre></p> gettext を使用して多言語アプリケーションを作成できるようになりました。ロケール ファイルの作成方法に興味があるかもしれませんが、これはこの記事の焦点では​​ありません。詳細については、ここに移動してください。 <p></p>get_browser()<p><codeCourier New',sans-serif; white-space:pre-wrap; word-wrap:break-word; font-size:0.9em; line-height:normal; overflow-x:auto">$_SERVER['HTTP_USER_AGENT']正直、この関数を見たときは泣きそうになりました。この関数を使用すると、文字列

を自分で解析する必要がなくなりました。

詳細については、こちらをご覧ください。この機能を使用する前に、browscap.ini 設定ファイルが必要になる場合がありますが、これで処理できると思います。

debug_print_backtrace()

以前は、関数呼び出しスタックを表示するには、xdebug などの拡張機能を使用していました。実際、PHP5 バージョンには関連する関数が組み込まれています。

ところで、この関数の名前を思い出せない場合は、このコードを使用して同じ目的を達成できます (そうする方が確実だと思われます)。この関数を覚えておいてください):

getTraceAsString())); natsort( )

この関数は、誰もが必要とする自然な並べ替えに使用されます。関連するドキュメントのリンクとサンプルコードを投稿してください

$items = array("100 apples", "5 apples", "110 apples", "55 apples"); // normal sorting: sort($items); print_r($items); # Outputs: # Array # ( # [0] => 100 apples # [1] => 110 apples # [2] => 5 apples # [3] => 55 apples # ) natsort($items); print_r($items); # Outputs: # Array # ( # [2] => 5 apples # [3] => 55 apples # [0] => 100 apples # [1] => 110 apples # )

自然ソートのアルゴリズムルールについては、こちらのドキュメントを参照してください。

glob()

この関数の関数も人々を泣かせます。関数については話さずにサンプルコードに直接行きましょう

foreach (glob("*.php") as $file) { echo "$file\n"; }

この関数の目的をすでに理解しているのと比較すると、もっと多くのことができます。たとえば、ディレクトリを表示します ( via ):

$dirs = array_filter(glob($path.'*'), 'is_dir');

もちろん、ファイルの再帰に SPL 拡張子を使用することも検討できます。

神仙による補足:

glob 有个参数选项 GLOB_ONLYDIR 就可以只列目录

PHP Filter

まだ定期的に文字列を検証している場合、それは本当に「アウト」です。 PHP5.2バージョン以降、PHPフィルターが組み込まれています このモジュールは、メールや URL などが正当であるかどうかを具体的に検証するために使用されます。 サンプルコード:

var_dump(filter_var('bob@example.com', FILTER_VALIDATE_EMAIL));

新しいモジュールなので、まだ

filter_var('abc', FILTER_VALIDATE_BOOLEAN); // bool(false) filter_var('0', FILTER_VALIDATE_BOOLEAN); // bool(false)

などのトラップがたくさんありますが、試しても問題ありません。 PHP Filter について詳しくは、また別の記事で書けると思います。

-- Split --

最後に、PHP は実際には長持ちするツールであることを嘆きます。注意しないと、悲劇的に車輪の再発明をすることになります。したがって、時々 PHP ドキュメントを参照すると、毎回新しいことを学ぶことができます。

上記は、関連する内容も含めて、無視されている PHP 関数を (整理して) 紹介しましたが、PHP チュートリアルに興味のある友人に役立つことを願っています。

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