Chuyển trang bằng hàm Header () và ob_start ()

Đôi khi javascript không giúp các bạn chuyển trang một cách suôn sẻ trong những tình huống sử lý đặc biệt. Bạn nên nghĩ đến hàm Header() của PHP.
Cú pháp như sau:
PHP Code:
header("Location: website cần trỏ đến");  

Ví dụ: 
PHP Code:
header("Location: http://google.com.vn");  

Có nhiều trường hợp bạn sẽ nhận được thông báo lỗi của máy chủ như: Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\Test\execute.php:10) in ...
Trong trường hợp này, bạn cần thêm dòng: ob_start(); vào dòng đầu tiên của file đang dùng hàm Header().Lỗi sẽ hết.

Hàm cắt chuỗi, tiêu đề Unicode trong PHP

Đây là hàm cắt chuỗi unicode được sử dụng khá nhiều trên các website.

function cstr($text$start=0$limit=12)
    {
        if (
function_exists('mb_substr')) {
            
$more = (mb_strlen($text) > $limit) ? TRUE FALSE;
            
$text mb_substr($text0$limit'UTF-8');
            return array(
$text$more);
        } elseif (
function_exists('iconv_substr')) {
            
$more = (iconv_strlen($text) > $limit) ? TRUE FALSE;
            
$text iconv_substr($text0$limit'UTF-8');
            return array(
$text$more);
        } else {
              
preg_match_all("/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/",  $text$ar);
            if(
func_num_args() >= 3) {
                if (
count($ar[0])>$limit) {
                    
$more TRUE;
                    
$text join("",array_slice($ar[0],0,$limit))."...";
                }
                
$more TRUE;
                
$text join("",array_slice($ar[0],0,$limit));
            } else {
                
$more FALSE;
                
$text =  join("",array_slice($ar[0],0));
            }
            return array(
$text$more);
        }
}
function 
sub_str($text$limit=25)
{
    
$val cstr($text0$limit);
    return 
$val[1] ? $val[0]."..." $val[0];
 

Cách sử dụng:
PHP Code:
$str "Hỗ trợ lập trình";

echo 
sub_str($str5);  


Và một số hàm cắt tiêu đề bài viết có thể nói là tương đối ổn.

function cut_string($str,$len,$more){ //Hàm cắt đoạn văn
    if ($str=="" || $str==NULL) return $str;
    if (is_array($str)) return $str;
    $str = trim($str);
    if (strlen($str) <= $len) return $str;
    $str = substr($str,0,$len);
    if ($str != "") {
    if (!substr_count($str," ")) {
    if ($more) $str .= " ...";
    return $str;
    }
    while(strlen($str) && ($str[strlen($str)-1] != " ")) {
    $str = substr($str,0,-1);
    }
    $str = substr($str,0,-1);
    if ($more) $str .= " ...";
    }
    return $str;
}

function cut_title($text, $len) { //Hàm cắt tiêu đề Unicode
    mb_internal_encoding('UTF-8');
    if( (mb_strlen($text, 'UTF-8') > $len) ) {
        $text = mb_substr($text, 0, $len, 'UTF-8');
        $text = mb_substr($text, 0, mb_strrpos($text," ", 'UTF-8'), 'UTF-8')."...";
    }
    return $text;
}

Định dạng ngày tháng năm trong PHP

Chào các bạn, Hẳn là các đã đã thấy các hiển thị ngày tháng năm trên web như: "thứ Ba, 25/5/2010" trong PHP chúng ta sẽ làm 1 function xử lý các định dạng thời gian để xuất ra kết quả như thế



Code date php:

PHP Code:
<?php echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';
echo 
returnDate(date("N"), "day") . ", " date("j") . "/" returnDate(date("n"), "month") . "/" date("Y");
function 
returnDate($num$tipe){
    
$str;
    switch(
$tipe){
        case 
"month":
            
$month_name = array("""01""02""03""04""05""06""07""08""09""10""11""12");
            
$str $month_name[floor($num)];
        break;
        case 
"day":
            
$day_name = array("""Thứ 2""Thứ 3""Thứ 4""Thứ 5""Thứ 6""Thứ 7""Thứ 8");
            
$str $day_name[floor($num)];
        break;
    }
    return 
$str;
}
?>

Hàm substr() và substring(), slice() cắt chuỗi trong Javascript

Hàm substr() và substring(), slice() đều là hàm cắt chuỗi trong Javascript. Nhưng mỗi hàm lại có công dụng và hành vi riêng của nó, những bạn mới tìm hiểu Javascript rễ hiểu lầm 2 hàm substr() và substring() giống nhau. Dưới đây là công dụng và cách sử dụng từng hàm.

1. Hàm substr()
Cấu trúc: string.substr(start[, length]);
  - start: là vị trí bắt đầu
  - length: là độ dài chuỗi con cần lấy tính từ vị trí bắt đầu

VD1:
var str="abcdefghijklmnopq";
document.write(str.substr(0,3)); //Từ đầu chuỗi lấy thêm 3 ký tự. Kết quả: "abc"
document.write(str.substr(3,5)); //Từ vị trí thứ 3 lấy thêm 5 ký tự. Kết quả: "defgh"

Nếu vị trí bắt đầu là số âm, hàm sẽ đếm ngược từ cuối chuỗi.
VD2:
var str="abcdefghijklmnopq";
document.write(str.substr(-10,4)); //từ vị trí thứ 10 tính từ cuối chuỗi lấy thêm 4 ký tự. Kết quả: "hijk"
  • Nếu độ dài (length) bằng 0 sẽ trả về 1 sâu rỗng
  • Nếu độ dài là giá trị âm (<0) sẽ được tính như là 0
  • Nếu khuyết độ dài (length) hàm sẽ trả về chuỗi con được tính từ vị trí bắt đầu đến cuối chuỗi.
VD3:
var str="abcdefghijklmnopq";
document.write(str.substr(3)); //Tính từ vị trí thứ 3 đến cuối chuỗi. Kết quả: "defghijklmnopq"
document.write(str.substr(-5)); //Tính từ vị trí thứ 5 (đếm từ cuối chuỗi) đến cuối chuỗi. Kết quả: "mnopq"

2. Hàm substring()
Cấu trúc: string.substring(start[, stop]);
 - strart: vị trí bắt đầu
 - stop: vị trí kết thúc
VD4:
var str="abcdefghijklmnopq";
document.write(str.substring(0,3)); //Lấy từ đầu chuỗi đến vị trí tứ 3. Kết quả: "abc"

document.write(str.substring(3,8)); //Lấy từ vị trí thứ 3 đến vị trí thứ 8. Kết quả: "defgh"
  • Nếu start bằng stop nó sẽ trả về chuỗi rỗng.
  • Nếu 1 trong 2 giá trị (start, stop) âm (nhỏ hơn 0) nó sẽ được xử lý như là 0
  • Nếu start > stop nó sẽ đổi vị trí 2 đối số.
  • Nếu 1 trong 2 giá trị (start, stop) lớn hơn chiều dài của chuỗi sẽ được xử lý bằng độ dài của chuỗi. (Nó cũng giống như bị khuyết giá trị đó)
  • Nếu bỏ qua stop (khuyết stop) sẽ lấy từ vị trí bắt đầu đến cuối chuỗi. (điều này giống với hàm substr())

3. Hàm slice(): hoạt động như substring() nhưng có một số hành vi khác nhau.
Cấu trúc: string.slice(start[, stop]);
 - Nếu giá trị kết thúc (stop) được bỏ qua cũng như hàm substring() sẽ tính từ vị trí bắt đầu đến cuối chuỗi.
 - Nếu start > stop, slice() sẽ không trao đổi 2 đối số. (Được con là điều kiện sai, trả về chuỗi rỗng)
 - Nếu start là số âm (<0), slice() sẽ thiết vị trí đếm từ cuối chuỗi, giống như substr(). Trong trường hợp đếm từ cuối chuỗi nhưng vị trí bắt đầu vẫn vượt vị trí kết thúc trong chuỗi nó sẽ giống như trường hợp start > stop. VD:
var str="abcdefghijklmnopq";
document.write(str.slice(-10,8)); Tính từ vị trí thứ 10 đếm ngược từ cuối chuỗi đến vị trí thứ 8 đếm từ đầu chuỗi. Kết quả: "h"

 - Nếu stop là âm, thì vị trí kết thúc cũng sẽ được tính từ cuối chuỗi đếm ngược lại.
var str="abcdefghijklmnopq";
document.write(str.slice(-10,-7)); Tính từ vị trí thứ 10 đếm ngược từ cuối chuỗi đến vị trí thứ 8 đếm ngược từ cuối chuỗi. Kết quả: "hij"
*Chú ý khi sử dụng slice() bạn có thể cho giá trị dương hoặc âm (tức là đếm từ đầu hoặc cuối chuỗi) nhưng vị trí bắt đầu không được vượt quá vị trí kết thúc, nếu không sẽ được coi là sai.

Các bạn hãy thử thay đổi giá trị của 2 đối số trong các hàm để hiểu rõ hơn về cách hoạt động của nó.

Hàm count() trong PHP - Đếm số phần tử của mảng hoặc một đối tượng

Hàm count() trả về số phần tử của mảng hay một đối tượng bạn chọn để đếm. Hàm này có thể đếm sâu trong trường hợp mảng 2 chiều hoặc 3 chiều...

Cú pháp:
count ( $var [, int $mode = COUNT_NORMAL ] );
 Trong đó:
 - $var là mảng hoặc đối tượng.
 - $mode được thiết lập là COUNT_RECURSIVE (hoặc là 1) thì hàm sẽ đếm sâu đến từng phần tử trong trường hợp mảng đa chiều.

Ví dụ 1:
$a[0] = 1;
$a[1] = 3;
$a[2] = 5;
$result = count($a); // $result == 3

$b[0]  = 7;
$b[5]  = 9;
$b[10] = 11;
$result = count($b); // $result == 3

$result = count(null); // $result == 0

$result = count(false); // $result == 1
Ví dụ 2:
$food = array('fruits' => array('orange', 'banana', 'apple'),
'veggie' => array('carrot', 'collard', 'pea'));

// recursive count
echo count($food, COUNT_RECURSIVE); // Ket qua la 8

echo count($food, 1); // Ket qua la 8

// normal count
echo count($food); // Ket qua la 2

Hàm strlen(), mb_strlen() - Đếm số ký tự trong chuỗi

Hàm strlen() và mb_strlen() đều là hàm đếm số ký tự trong chuỗi. Nhưng hàm mb_strlen() dùng trong trường hợp chuỗi kí tự được mã hoá kiểu 'UTF-8' hoặc bất kì kiểu mã hoá nào khác.

Cú pháp:
strlen(string $str);
mb_strlen(string $str [, string $encoding ]);

Ví dụ 1:
echo strlen('tu hoc php'); //Kết quả là 10
Ví dụ 2:
echo strlen('tự học php'); //Kết quả lại là 14
Trong ví dụ 2 bạn thấy hàm strlen() đếm không còn chuẩn nữa. Hãy thử hàm mb_strlen()

Ví dụ 3:
echo mb_strlen('tự học php', 'UTF-8'); //Kết quả là 10
Như vậy hàm mb_strlen() đã đếm chuẩn các ký tự được mã hoá UTF-8

Hàm strpos(), stripos(), strrpos(), strripos() trong PHP - Tìm vị trí của chuỗi con trong một chuỗi

Các hàm strpos(), stripos(), strrpos(), strripos() đều là những hàm trả về vị trí tìm thấy của chuỗi con trong một chuỗi. Nhưng mỗi hàm lại có một ưu điểm và cách sử rụng riêng. Và dưới đây mình sẽ giúp các bạn hiểu rõ hơn về cách hoạt động của từng hàm và sử dụng nó thế nào cho hợp lý với yêu cầu sử lý của bạn.

Hàm strpos() trả về giá trị là vị trí của chuỗi con trong một chuỗi (nếu tìm thấy hàm sẽ trả về vị trí tìm thấy chuỗi con và trả về giá trị false nếu không tìm thấy. Trong trường hợp chuỗi con xuất hiện nhiều lần trong chuỗi hàm sẽ trả về giá trị là vị trí đầu tiên tìm thấy (Có phân biệt kí tự HOA hoặc thường). Bạn cũng có thể chỉ định cho nó bắt đầu tìm kiếm từ vị trí nào

Cú pháp:
strpos(string $str, string $substr, [int $num]);
Trong đó:
 - $str là chuỗi mẹ cho trước
 - $substr là chuỗi con cần tìm vị trí trong $str.
 - $num là vị trí bắt đầu tìm chuỗi con từ đó. VD: $num =7 thì hàm bắt đầu tìm kiếm trong khoảng từ vị trí thứ 7 (đếm từ đầu chuỗi) đến cuối chuỗi

Ví dụ 1:
echo strpos('Tu hoc PHP don gian den PHP nang cao','PHP');
hoặc
 echo strpos('Tu hoc PHP don gian den PHP nang cao','PHP', 0);
Hoạt động của 2 ví dụ trên là tương đương nhau, và kết quả đều là: 7
(Chú ý: nếu ta không điền vị trí bắt đầu tìm kiếm hoặc đặt là 0 sẽ giống nhau, khi đó nó sẽ tìm từ đầu chuỗi đến cuối chuỗi)

Ví dụ 2:
echo strpos('Tu hoc PHP don gian den PHP nang cao','PHP', 7);

Kết quả là: 24

Hàm stripos() về cơ bản là giống hàm strpos(). Nhưng khác ở chỗ là hàm stripos() không phân biệt kí tự HOA hay thường.

Cú pháp:
stripos(string $str, string $substr, [int $num]);
Trong đó:
 - $str là chuỗi mẹ cho trước.
 - $substr là chuỗi con cần tìm vị trí trong chuỗi $str.
 - $num là vị trí được chỉ định để bắt đầu tìm kiếm từ đó.

Ví dụ 3:
$str = 'Tu hoc PHP don gian den PHP nang cao';
$substr = 'php';
echo stripos($str, $substr);
Kết quả: 7

Ví dụ 4:
$str = 'Tu hoc PHP don gian den PHP nang cao';
$substr = 'pHp';

echo stripos($str, $substr, 11);
Kết quả: 24
Chú ý trong ví dụ 3 và ví dụ 4 này thì $substr = 'pHp' hay $substr = 'PHp'... thì đều tương tự nhau

Hàm strrpos() trả về vị trí xuất hiện cuối cùng của chuỗi con. Về cơ bản hoạt động giống hàm strpos() nhưng trong trường hợp chuỗi con xuất hiện nhiều lần thì nó sẽ trả về vị trí cuối cùng tìm thấy. (Có phân biệt kí tự HOA hay thường).

Cú pháp:
strrpos(string $str, string $substr, [int $num]);
Trong đó:
 - $str là chuỗi mẹ cho trước.
 - $substr là chuỗi con cần tìm vị trí trong chuỗi $str.
 - $num là vị trí được chỉ định để bắt đầu tìm kiếm từ đó. $num có cả giá trị âm và dương.
    + Là giá trị dương sẽ tính như bình thường từ đầu chuỗi. VD: $num = 7 thì hàm sẽ bắt đầu tìm kiếm trong khoảng từ vị trí thứ 7 (tính từ đầu chuỗi) đến cuối chuỗi.
    + Ngược lại là giá trị âm sẽ tính giá trị đó từ cuối chuỗi. VD: $num = -5 thì hàm sẽ tìm kiếm trong khoảng từ đầu chuỗi đến vị trí thứ 5 đếm từ cuối chuỗi.

Ví dụ 6:
$str = 'Tu hoc PHP don gian den PHP nang cao';
$substr = '
PHP';
echo strrpos($str, $substr);
Kết quả: 24

Ví dụ 7:
$str = 'Tu hoc PHP don gian den PHP nang cao';
$substr = 'PHP';

echo strrpos($str, $substr, 10);
Kết quả: 24

Ví dụ 8:
$str = 'Tu hoc PHP don gian den PHP nang cao';
$substr = '
PHP';
echo strrpos($str, $substr, -15);
Kết quả: 7

Hàm strripos() về cơ bản hoạt động giống hàm strrpos nhưng không phân biệt kí tự HOA hay thường.

Ví dụ 9:
$str = 'Tu hoc PHP don gian den PHP nang cao';
$substr = '
php';
echo strripos($str, $substr);
Kết quả: 24

Ví dụ 10:
$str = 'Tu hoc PHP don gian den PHP nang cao';
$substr = '
phP';
echo strripos($str, $substr, -15);
Kết quả: 7

Chú ý: khi sử dụng các hàm này để so sánh nên dùng so sánh tuyệt đối (===, !==), vì trong một vài trường hợp nó sẽ không chạy theo ý bạn. Ví dụ dưới đây sẽ giúp bạn hiểu hơn về điều này.
$str = 'agoHAdgoajdasEAgae';
$substr = 'a';
if(strpos($str, $substr)==false) echo 'Khong tim thay "'.$substr.'" trong chuoi "'.$str.'"';
else echo 'Tim thay "'.$substr.'" o vi tri thu '.strpos($str, $substr).' trong chuoi "'.$str.'"';
Kết quả sẽ  là: Khong tim thay "a" trong chuoi "agoHAdgoajdasEAgae"
Rõ ràng là sai vì a xuất hiện mấy lần trong chuỗi.
Lý do là hàm đã tìm thấy "a" ở vị trí số  và trả về giá trị là 0. Mà trong PHP 0=false (0 đồng nghĩa với false), vậy khi bạn so sánh điều kiên strpos($str, $substr)==false hàm if sẽ trả về giá trị là đúng (true). Trong trường hợp này bạn phải so sánh tuyệt đối như sau:
$str = 'agoHAdgoajdasEAgae';
$substr = 'a';
if(strpos($str, $substr)===false) echo 'Khong tim thay "'.$substr.'" trong chuoi "'.$str.'"';
else echo 'Tim thay "'.$substr.'" o vi tri thu '.strpos($str, $substr).' trong chuoi "'.$str.'"';
Kết quả sẽ là: Tim thay "a" o vi tri thu 0 trong chuoi "agoHAdgoajdasEAgae"

Các bạn hãy thay các thông số trong từng ví dụ để hiểu rõ hơn về từng hàm nhé.

Hàm strstr(), stristr() trong PHP | Tách chuỗi con từ một chuỗi

Hàm strstr() trả về một chuỗi bắt đầu từ thông số định trước, có phân biệt kí tự HOA hay thường. Nó cho phép ta tách đôi chuỗi mẹ từ vị trí đầu tiên tìm thấy của một chuỗi con định tước trước. Trong trường hợp chuỗi con xuất hiện nhiều lần trong chuỗi lớn thì nó sẽ lấy vị trí đầu tiên tìm thấy.

Cú pháp:
strstr(string $str, string $substr, [bool true or false]);
Trong đó:
 - $str là chuỗi mẹ cần tách
 - $substr là chuỗi con (để làm điều kiện tìm kiếm vị trí tách chuỗi)
 - giá trị true hoặc false là để xác định bạn lấy chuỗi phía trước hay chuỗi phí sau

Ví dụ: ( nếu không điền true hoặc false thì tương đương với giá trị false)
$str = strstr( "Tu hoc PHP co ban den PHP nang cao", "PHP");
echo $str;
Kết quả:
'PHP co ban den PHP nang cao'
Ví dụ
echo strstr( "Tu hoc PHP co ban den PHP nang cao", "PHP", true);
Kết quả:
'Tu hoc '
Hàm stristr() cũng trả về giá trị là một chuỗi được tách ra từ thông số định trước. Về cơ bản giống chức năng của hàm strstr(), nhưng khác ở chỗ là hàm này không phân biệt kí tự HOA hay thường.

Cú pháp cũng giống hàm strstr():
stristr($str,$substr);
Trong đó:
 - $str là chuỗi mẹ cần tách
 - $substr là chuỗi con (để làm điều kiện tìm kiếm vị trí tách chuỗi), không phân biệt kí tự HOA hay thường

Vi dụ
echo stristr( "Tu hoc PHP co ban den PHP nang cao", "php" );
Kết quả:
'PHP co ban den PHP nang cao'
hoặc
echo stristr( "Tu hoc PHP co ban den PHP nang cao", "PHP" );
Cũng cho kết quả tương tự như vậy.

Ví dụ tiếp
echo stristr( "Tu hoc PHP co ban den PHP nang cao", "php", true);
Kết quả
'Tu hoc '
Hãy thay các thông số định trước để các bạn có thể hiểu rõ hơn về hai hàm này.

Cắt chuỗi trong PHP bằng substr()

Cũng như các ngôn ngữ lập trình khác, PHP hỗ trợ hàm substr() để cắt chuỗi con với chiều dài l bắt đầu từ vị trí thứ i từ chuỗi str được cung cấp.

Cú pháp.

String substr(string str, a, b)

Trong đó:
 - a là vị trí bắt đầu chuỗi cần lấy
 - b là số ký tự cần lấy. nếu b bạn để là số âm (VD: substr($str, 2, -5) thì chuỗi cần lấy sẽ lấy từ vị trí thứ 2 đến cuối chuỗi và trừ đi 5 ký tự cuối chuỗi đó. substr("abcdefgh", 2, -5) = "c"

substr($str, 0, 1) lấy giá trị đầu tiên của chuỗi.

Ví dụ:

$str substr("abcdefgh"04); //kết quả là $str = "abcd" (lấy từ vị trí 0 là vị trí đầu tiên, và từ vị trí đó lấy thêm 4 ký tự nữa) 
Chú ý:

Các bạn để chuỗi và vị trí chọn khi cắt chuỗi. Nếu bạn chọn vị trí bắt đầu từ 1 thì chuỗi sẽ lấy từ ký tự b (nếu nhìn vào chuỗi abcdefgh bạn sẽ lầm tưởng vị trí 1 sẽ lấy từ a. Sai)

Nếu bạn không cung cấp chiều dài của chuỗi cần lấy ra substr($str, a), hàm này sẽ trả về chuỗi con từ vị trí thứ a đến hết chuỗi. Những ví dụ sau sẽ giúp bạn hiểu rõ hơn về hàm này:

<?php
    $str
="hotrolaptrinh";
    echo 
$str."<br/>"// Hiển thị chuỗi gốc.
    
echo substr($str,1)."<br/>"// Cắt lấy chuối con từ vị trí 1 đến hết chuỗi. KQ: otrolaptrinh
    
echo substr($str,-6)."<br/>"//Bỏ đi 6 ký tự cuối chuỗi. KQ: hotrola
    
echo substr($str,1,5)."<br/>"// Cắt lấy từ vị trí số 1 và lấy thêm 5 ký tự từ vị trí đó. KQ: otrol
    
echo substr($str,2,-4)."<br/>"//Cắt lấy từ vị trí số 2 và bỏ đi 4 ký tự từ cuối chuỗi. KQ: trolapt?>

Chúc các bạn thành công!