تابع strlen
یک آرگومان:
طول رشته را برمیگرداند.
$str = 'abcdef'; echo strlen($str); // 6 $str = ' ab cd '; echo strlen($str); // 7
* نکته: حالا strlen رو برای رشته ی فارسی اگه استفاده کنیم , هر کاراکترو دو بایت بحساب میاره :(علت: چون strlen تعداد بایت هارو خروجی میده و براساس مجموعه ASCII که یک بایتی هست محاسبه میشود نه Unicode های چند بایتی)
$str = 'محسن'; echo strlen($str); // 8
برای حل این موضوع , باید از تابع mb_strlen استفاده کنیم.
تابع mb_strlen
دو آرگومان داره:
$str = 'محسن'; echo mb_strlen($str, 'utf-8'); // 4
* توابع کار با رشته های کدگذاری شده(چند بایتی) با (mb_(funcName شروع میشن.
تابع str_word_count
سه آرگومان:
$str = "Hello fri3nd, you're looking good today!" // Example 1 print_r(str_word_count($str, 1)); // Example 2 print_r(str_word_count($str, 2)); // Example 3 print_r(str_word_count($str, 1, 'àáãç3')); // Example 4 echo str_word_count($str);
خروجی ها:
// Example 1 Array ( [0] => Hello [1] => fri [2] => nd [3] => you're [4] => looking [5] => good [6] => today ) // Example 2 Array ( [0] => Hello [6] => fri [10] => nd [14] => you're [29] => looking [46] => good [51] => today ) // Example 3 Array ( [0] => Hello [1] => fri3nd [2] => you're [3] => looking [4] => good [5] => today ) // Example 4 7
تابع strtolower
یک آرگومان:
کاراکتر ها رو تبدیل به کاراکتر های کوچک میکند.
$str = "Mary Had A Little Lamb and She LOVED It So" $str = strtolower($str); echo $str; // Prints: mary had a little lamb and she loved it so
تابع strtoupper
برعکس تابع قبلی , رشته تبدیل به حروف بزرگ میشن.
$str = "Mary Had A Little Lamb and She LOVED It So" $str = strtoupper($str); echo $str; // Prints: MARY HAD A LITTLE LAMB AND SHE LOVED IT SO
تابع ucfirst
یک آرگومان:
اولین کاراکتر رشته رو به کاراکتر بزرگ تبدیل میکنه (first upper case).
$foo = 'hello world!'; $foo = ucfirst($foo); // Hello world! $bar = 'HELLO WORLD!'; $bar = ucfirst($bar); // HELLO WORLD! $bar = ucfirst(strtolower($bar)); // Hello world!
تابع lcfirst
برعکس تابع قبلی , اولین کاراکتر رشته رو به حرف کوچک تبدیل میکنه.
$foo = 'HelloWorld'; $foo = lcfirst($foo); // helloWorld $bar = 'HELLO WORLD!'; $bar = lcfirst($bar); // hELLO WORLD! $bar = lcfirst(strtoupper($bar)); // hELLO WORLD!
تابع ucwords
یک آرگومان:
اولین کاراکتر هر کلمه در رشته رو تبدیل به حرف بزرگ میکنه.
$foo = 'hello world!'; $foo = ucwords($foo); // Hello World! $bar = 'HELLO WORLD!'; $bar = ucwords($bar); // HELLO WORLD! $bar = ucwords(strtolower($bar)); // Hello World!
تابع explode
سه آرگومان:
این تابع رشته ای میگیره و بر اساس مرز جدا کننده ای که مشخص میکنیم , کلمات رو در خونه های یک آرایه میریزه.
رشته تبدیل میشه به یک آرایه.
// Example 1 $pizza = "piece1 piece2 piece3 piece4 piece5 piece6" $pieces = explode(" ", $pizza); echo $pieces[0]; // piece1 echo $pieces[1]; // piece2 ################################# // Example 2 $data = "foo:*:1023:1000::/home/foo:/bin/sh" list($user, $pass, $uid, $gid, $gecos, $home, $shell) = explode(":", $data); echo $user; // foo echo $pass; // * echo $shell; // /bin/sh ################################# // Example 2 $pizza = "piece1, piece2, piece3, piece4, piece5, piece6" $pieces = explode(",", $pizza, -2); print_r($pieces); // Array ( [0] => piece1 [1] => piece2 [2] => piece3 [3] => piece4 )
تابع implode
دو آرگومان:
این تابع برخلاف تابع قبلی عمل میکنه و یک آرایه میگیره و بر اساس کاراکتر چسباننده , خانه های آرایه رو بهم می چسبونه و یک رشته به عمل میاد.(یعنی بر عکس تابع explode)
$array = array('lastname', 'email', 'phone'); $comma_separated = implode(",", $array); echo $comma_separated; // lastname,email,phone
تابع strrev
یک آرگومان:
خوب مشخصه دیگه. یک رشته میگیره و رشته رو برعکس میکنه.
echo strrev("Hello world!"); // outputs "!dlrow olleH"
تابع str_shuffle
یک آرگومان:
کاراکتر های رشته به صورت رندوم جاهاشون عوض میشه و مخلوط میشن.مثل تابع shuffle در آرایه.
$str = 'abcdef'; $shuffled = str_shuffle($str); // This will echo something like: bfdaec echo $shuffled;
تابع str_repeat
دو آرگومان:
این تابع , عبارتی که بهش میدیمو با تعداد دفعاتی که مشخص کردیم, تکرار میکنه.
echo str_repeat("-=", 10); // output -=-=-=-=-=-=-=-=-=-=
تابع str_replace
از اسمش معلومه که کارش عوض کردن کلمه ها و مقادیره.
4 آرگومان:
// Example 1 $bodytag = str_replace("%body%", "black", "<body text='%body%'>"); echo $bodytag; // provides: <body text='black'> // Example 2 $vowels = array("a", "e", "i", "o", "u", "A", "E", "I", "O", "U"); $onlyconsonants = str_replace($vowels, "", "Hello World of PHP"); echo $onlyconsonants; // output: Hll Wrld f PHP // Example 3 $phrase = "You should eat fruits, vegetables, and fiber every day." $healthy = array("fruits", "vegetables", "fiber"); $yummy = array("pizza", "beer", "ice cream"); $newphrase = str_replace($healthy, $yummy, $phrase); echo $newphrase; // output: You should eat pizza, beer, and ice cream every day // Example 4 $str = str_replace("ll", "", "good golly miss molly!", $count); echo $count; // output: 2
تابع htmlentities : (جلوگیری از حملات XSS)
string htmlentities ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = ini_get("default_charset") [, bool $double_encode = true ]]] )
4 آرگومان:
* این تابع کاراکتر های معنی دار و قابل اجرا رو در برنامه مثل (تگ ها) با کدگذاری اثرشونو خنثی میکنه و در صفحه دیده میشن.
بعنوان مثال , چنتا از کاراکتر ها و معادل کد گذاری شده ی اونها:
< => < > => >; & => & " => " ' => '
خوب با توجه به کاراکتر هایی که نمونه اوردم چنتا مثال میزنم.
$str = ''; echo htmlentities($str , ENT_COMPAT, 'UTF-8');
چیزی که در صفحه چاپ میشه:
اما چیزی که در page source چاپ میشه.(البته var_dump هم میتونید بگیرید.)
alert("XSS")
یک نکته: ENT_COMPAT گفتیم دابل کوت هارو کد میکنه.(تک کوت هارو شامل نمیشه!)
مثال:
$str = "A 'quote' is <b>bold</b>" // Page Source: A 'quote' is <b>bold</b> echo htmlentities($str); // A 'quote' is <b>bold</b> => by default , the flag is ENT_COMPAT echo htmlentities($str, ENT_COMPAT); // Display: A 'quote' is <b>bold</b> *********************************** $str = "A 'quote' is <b>bold</b>" // Page Source: A 'quote' is <b>bold</b> // Encodes double and single quotes echo htmlentities($str, ENT_QUOTES); // Display: A 'quote' is <b>bold</b>
حالا یک مثال واسه فلگ ENT_IGNORE:
$str = "\x8F!!!" // Outputs an empty string echo htmlentities($str, ENT_QUOTES, "UTF-8"); // Outputs "!!!" echo htmlentities($str, ENT_QUOTES | ENT_IGNORE, "UTF-8");
با فلگ ignore , قسمت نامعتبرو نادیده میگیره و بقیه رشته رو چاپ میکنه ولی فلگ های (quotes , compat , noquotes) اگر مقداری نامعتبر در رشته وجود داشته باشه , یک رشته ی خالی بر میگردونن که در مثال بالا دیدیم.
اما مثالی برای آرگومان چهارم با مقدار false:
$str = 'Hot & Cold and On & Off'; // Display: Hot & Cold and On & Off echo htmlentities($str, ENT_COMPAT, 'UTF-8', TRUE); // Source: Hot & Cold and On & Off // Display: Hot & Cold and On & Off echo htmlentities($str, ENT_COMPAT, 'UTF-8', FALSE); // Source: Hot & Cold and On & Off
همونطور که مشاهده کردید , زمانی که در حالت true باشه , عبارت (;amp&) و قسمت (&) عبارت یک مرتبه ی دیگه , encode شد و تبدیل شد به:
&
خوب , فک کنم مثال ها کافی بودن واسه آشنایی با این تابع.
از این تابع برای چاپ مقادیری که از کاربر میگیرین استفاده کنین.این تابع از حملات XSS جلوگیری میکنه.
تابع htmlspecialchars : (جلوگیری از حملات XSS)
string htmlspecialchars ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = ini_get("default_charset") [, bool $double_encode = true ]]] )
* مشخصات و کاربرد مثل تابع قبلی (htmlentities)
* این تابع , فقط همین چند کاراکتر مشخص شده رو encode میکنه:
به نوعی این تابع زیر مجموعه ای از htmlentities می باشد.
تابع nl2br
string nl2br ( string $string [, bool $is_xhtml = true ] )
2 آرگومان:
بجای new lines تگ </ br> و یا <br> را اضافه میکند.
New Lines:
\r\n \n\r \n \r
مثال ها:
(1) echo nl2br("foo isn't\n bar"); // Output foo isn't<br /> bar /*********************************/ (2) // is_xhtml = false echo nl2br("Welcome\r\nThis is my HTML document", false); // Output Welcome<br> This is my HTML document /*********************************/ (3) $string = "This\r\nis\n\ra\nstring\r" echo nl2br($string); // Output This<br /> is<br /> a<br /> string<br />
* اگر از جایی متنی کپی میکنید و در ادیتوری ویرایش نشده از این تابع استفاده کنید.
نویسنده: محسن موحد