منبع اصلی نوشتار زیر در این لینک قرار دارد

PHP و توابعی که کمتر استفاده میکنیم

چند تا تابع هست که ممکنه شما ندیده باشیدشون. منم یه چند تایی رو میشناختم که هر کدوم یه وقتایی نجاتم داده بودن از کلی کد نویسی زاید. این شد که تصمیم گرفتم یه چند تایی رو معرفی کنم:
pack()
این تابع یک بار منو نجات داد. PHP برای عملیات بیتی مخصوصا روی فایلها کار چندانی انجام نداده. یعنی تمام توابع برخلاف زبانهای دیگه هستند. مثلا تابع fwrite یه رشته (string )‌رو توی فایل مینویسه و این یعنی یه مشکل :)‌.
یه زمانی میخواستم برنامه ای بنویسم که یه فایلی ایجاد کنه که توی دلفی بخونمش،‌اونجا قضیه برعکسه. توی دلفی باینری یه انتخاب ساده تره. اینجا بود که تابع pack رو پیدا کردم این تابع برای ایجاد یک رشته باینری استفاده میشه. یعنی اگه این رشته رو توی یه فایل بنویسی خیلی راحت میتونی مثلا توی دلفی یا سی اونو از فایل بخونی. مثلا برای ایجاد کردن یه خط حاوی دو تا کاراکتر،‌یه int اینجوری میشه عمل کرد :

	$bin_str=pack(\'ccI\',65,70,122);

همین. لیت فرمتهای پشتیبانی شده توسط این تابع توی صفحه راهنما هست. یه تابع برعکس هم هست، تابع unpack() که میتونه خیلی مفید باشه.

get_browser()
این تابع،‌بر اساس user-agent داده شده، یه سری اطلاعات رو به شما میده که میتونه مفید باشه. البته برای اینکه این تابع کار کنه نیاز به اینه که فایل browsecap رو توی فایل تنظیمات php اضافه کنید مثلا :

[browscap]
; http://php.net/browscap
browscap = /opt/lampp/share/php_browscap.ini

البته فقط معلوم نیست چرا این رو نمیشه از طریق کد انجام داد (یعنی این فقط از طریق فایل ini قابل تغییره نه از طریق apache یا اینکه ini_set )‌بنابر این قبل از اینکه از این تابع استفاده کنید حتما مطمئن بشید که توی سرورتون تنظیمه. طریقه استفاده سادست :

<?php
echo $_SERVER[\'HTTP_USER_AGENT\'] . "\\n\\n";

$browser = get_browser($_SERVER[\'HTTP_USER_AGENT\'], true);
print_r($browser);
?>

اینم خروجیش برای من :

Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.21022) FirePHP/0.4

Array
(
    [browser_name_regex] => §^mozilla/5\\.0 \\(x11; .*; .*linux.*; .*; rv:1\\.9\\.2.*\\) gecko/.* firefox/3\\.6.*$§
    [browser_name_pattern] => Mozilla/5.0 (X11; *; *Linux*; *; rv:1.9.2*) Gecko/* Firefox/3.6*
    [parent] => Firefox 3.6
    [platform] => Linux
    [browser] => Firefox
    [version] => 3.6
    [majorver] => 3
    [minorver] => 6
    [frames] => 1
    [iframes] => 1
    [tables] => 1
    [cookies] => 1
    [javaapplets] => 1
    1 => 1
    [cssversion] => 3
    [supportscss] => 1
    [alpha] =>
    [beta] =>
    [win16] =>
    [win32] =>
    [win64] =>
    [backgroundsounds] =>
    [cdf] =>
    [vbscript] =>
    [activexcontrols] =>
    [isbanned] =>
    [ismobiledevice] =>
    [issyndicationreader] =>
    [crawler] =>
    [aol] =>
    [aolversion] => 0
)

فعلا حوصله نوشتن بیشتر ندارم، وقتشم نیست. تا دفعه بعد که ادامه اینو بنویسم.

پستهای مرتبط :

  1. ایجاد مکرر کلید جلسه در مورد جلسات این چند روزه زیاد نوشتم. تو آخرین...
  2. HTTP Redirect یه چند وقتی هست که مدام درگیر کارهای امنیتی، خصوصا...
  3. سایت کاربران آرچ لینوکس فارسی بالاخره بعد از یک سال تاخیر، سایت آرچ لینوکس فارسی...



برچسب ها : ,