Hướng dẫn dùng str tok trong PHP

Hàm strtok() sẽ nhận diện các dấu hiệu mà người dùng truyền vào.

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Hàm trả về chuỗi con bắt đầu từ đầu chuỗi gốc và kéo dài đến vị trí đầu tiên xuất hiện của dấu hiệu và không bao gồm dấu hiệu đó.

Nếu không tồn tại dấu hiệu nào trong chuỗi, hàm sẽ trả về chuỗi ban đầu.

Cú pháp

Cú phápstrtok( $str, $tok);

Bài viết này được đăng tại [free tuts .net]

Trong đó:

  • $str là chuỗi cần tìm kiếm dấu hiệu.
  • $tok là dấu hiệu nhận biết để tìm kiếm. Nếu $tok là một chuỗi ( vd "string") hàm sẽ hiểu nó là một danh sách các dấu hiệu ( "s,t,r,i,n,g").
  • Lưu ý: nếu chỉ truyền vào $tok hàm sẽ tự động lấy phần còn lại của chuỗi khi thực hiện hàm strtok() trước đó và coi nó như là chuỗi $str (tìm hiểu ví dụ 2).

Ví dụ

Code

$string = "This is an example string";
echo strtok($string, "an") . "<br />";
echo strtok($string, "s") . "<br />";
echo strtok($string, "z") . "<br />";

Kết quả

This is <br>Thi<br>This is an example string

Không sử dụng tham số:

Code

$string = "This is an example string";
echo strtok($string, " ") . "<br />"; //this
echo strtok(" "). "<br />"; //$str lúc này là "is an example string"
echo strtok(" "). "<br />"; //$str lúc này là "an example string"
echo strtok(" "). "<br />"; //$str lúc này là "example string"

Kết quả

This
is
an
example

Tham khảo: php.net

Hàm strtok() sẽ nhận diện các dấu hiệu mà người dùng truyền vào.

Nội dung chính

  • Khái niệm về chuỗi trong PHP
  • Khai báo chuỗi ký tự
  • Biểu diễn chuỗi theo nháy đơn ''
  • Biểu diễn chuỗi theo nháy kép ""
  • Biểu diễn chuỗi theo Heredoc
  • Biểu diễn chuỗi theo Nowdoc
  • CÁC PHÉP TOÁN VÀ HÀM VỀ CHUỖI TRONG PHP
  • Nối các chuỗi ký tự trong PHP
  • Hàm hay dùng về chuỗi trong PHP
  • VÀI ĐOẠN CODE VỀ CHUỖI
  • Ngắt chuỗi thành chuỗi ngắn hơn

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Hàm trả về chuỗi con bắt đầu từ đầu chuỗi gốc và kéo dài đến vị trí đầu tiên xuất hiện của dấu hiệu và không bao gồm dấu hiệu đó.

Nếu không tồn tại dấu hiệu nào trong chuỗi, hàm sẽ trả về chuỗi ban đầu.

Cú pháp

Cú phápstrtok( $str, $tok);

Bài viết này được đăng tại [free tuts .net]

Trong đó:

  • $str là chuỗi cần tìm kiếm dấu hiệu.
  • $tok là dấu hiệu nhận biết để tìm kiếm. Nếu $tok là một chuỗi ( vd "string") hàm sẽ hiểu nó là một danh sách các dấu hiệu ( "s,t,r,i,n,g").
  • Lưu ý: nếu chỉ truyền vào $tok hàm sẽ tự động lấy phần còn lại của chuỗi khi thực hiện hàm strtok() trước đó và coi nó như là chuỗi $str (tìm hiểu ví dụ 2).

Ví dụ

Code

$string = "This is an example string";
echo strtok($string, "an") . "<br />";
echo strtok($string, "s") . "<br />";
echo strtok($string, "z") . "<br />";

Kết quả

This is <br>Thi<br>This is an example string

Không sử dụng tham số:

Code

$string = "This is an example string";
echo strtok($string, " ") . "<br />"; //this
echo strtok(" "). "<br />"; //$str lúc này là "is an example string"
echo strtok(" "). "<br />"; //$str lúc này là "an example string"
echo strtok(" "). "<br />"; //$str lúc này là "example string"

Kết quả

This
is
an
example

Tham khảo: php.net

Khái niệm về chuỗi trong PHP

Kiểu string gọi là chuỗi (hay xâu ký tự) đó là chuỗi các ký tự (biểu diễn nội dung văn bản - text): ví dụ "Tôi học Php" là một chuỗi trong PHP.

Nội dung chính

  • Khái niệm về chuỗi trong PHP
  • Khai báo chuỗi ký tự
  • Biểu diễn chuỗi theo nháy đơn ''
  • Biểu diễn chuỗi theo nháy kép ""
  • Biểu diễn chuỗi theo Heredoc
  • Biểu diễn chuỗi theo Nowdoc
  • CÁC PHÉP TOÁN VÀ HÀM VỀ CHUỖI TRONG PHP
  • Nối các chuỗi ký tự trong PHP
  • Hàm hay dùng về chuỗi trong PHP
  • VÀI ĐOẠN CODE VỀ CHUỖI
  • Ngắt chuỗi thành chuỗi ngắn hơn
  • KHÁI NIỆM VỀ CHUỖI
  • KHAI BÁO CHUỖI
  • ›› Biểu diễn chuỗi theo nháy đơn
  • ›› Biểu diễn chuỗi theo nháy kép
  • ›› Biểu diễn chuỗi bằng Heredoc
  • ›› Biểu diễn chuỗi bằng Nowdoc
  • PHÉP TOÁN - HÀM VỀ CHUỖI
  • ›› Nối hai chuỗi
  • ›› Hàm hay dùng
  • VÀI ĐOẠN CODE VỀ CHUỖI

Khai báo chuỗi ký tự

Thường thì bạn có 4 cách để có được chuỗi ký tự trong PHP:

  • Sử dụng cặp ký tự nháy đơn ''
  • Sử dụng cặp ký tự nháy kép ""
  • Sử dụng cú pháp heredoc
  • Sử dụng cú pháp nowdoc

Biểu diễn chuỗi theo nháy đơn ''

Đây là cách đơn giản để có được chuỗi ký tự. Chuỗi là các ký tự nằm giữa cặp nháy đơn ''. Khi dùng kiểu này muốn chứa ký tự ' thì phải viết \', muốn chứa \ thì viết \\.

Ví dụ:

<?php
    $value = 'Abc';
    
    echo 'đây là một chuỗi ký tự';                      // đây là một chuỗi ký tự
    echo 'Chuỗi này có ký tự \' bên trong';             // Chuỗi này có ký tự ' bên trong
    echo 'Kiểu này không chèn biến $value vào chuỗi';   // Kiểu này không chèn biến $value vào chuỗi được
?>

Biểu diễn chuỗi theo nháy kép ""

Chuỗi là các ký tự nằm giữa cặp nháy kép "". Khi dùng cách tạo chuỗi này PHP sẽ tự động chuyển ký hiệu một số ký tự đặc biệt. Ví dụ: \nLF - dòng mới, \rCR - đầu dòng, \tký tự tab, \$ký tự $, \"ký tự ", \\ký tự \ ...

Điều đặc biệt của chuỗi trong dấu "" là nó tự động chèn giá trị của biến chứa bên trong khai báo chuỗi.

<?php
    $doing = 'learning PHP';
    echo "I am $doing";
?>

Chạy code trên sẽ in ra kết quả: "I am learning PHP"

Biểu diễn chuỗi theo Heredoc

Nếu hai cách trên vẫn thấy gò bó trong việc sử dụng chuỗi thì bạn có thể tham khảo Heredoc, nó vẫn tận dụng được cách dùng "" tự chèn giá trị biến nhưng thoải mái hơn khi sử dụng các ký tự đặc biệt.

Heredoc bao giờ cũng bắt đầu bằng <<<, tiếp theo là một tên định danh do bạn đặt rồi phải xuống dòng ngay, và cuối cùng phải kết thúc bằng định danh; ở một dòng mới.

Ví dụ sau tôi chọn định danh có tên là CONMEO:

<?php
    $congi = 'mèo';
    $caygi = 'cau';
    
    $str = <<<CONMEO
    Con $congi mà trèo cây $caygi,
    Hỏi thăm chú chuột đi đâu vắng nhà. 
    Chú chuột đi chợ đường xa.
    Mua mắm mua muối giỗ cha chú $congi.
    CONMEO;
    
    echo $str;
?>

Kết quả:

Con mèo mà trèo cây cau, 
Hỏi thăm chú chuột đi đâu vắng nhà. 
Chú chuột đi chợ đường xa.
Mua mắm mua muối giỗ cha chú mèo.

Biểu diễn chuỗi theo Nowdoc

Cách này khá giông với Heredoc, nhưng bắt đầu bằng <<<'Định-Danh' (có cặp '' - heredoc thì không có). Nowdoc vẫn cho phép viết trực tiếp các ký tự đặc biệt nhưng sẽ không phân tích biến đề chèn vào chuỗi.

Trở lại bài thơ trên nếu dùng nowdoc:

<?php
    $congi = 'mèo';
    $caygi = 'cau';
    
    $str = <<<'CONMEO'
    Con $congi mà trèo cây $caygi,
    Hỏi thăm chú chuột đi đâu vắng nhà. 
    Chú chuột đi chợ đường xa.
    Mua mắm mua muối giỗ cha chú $congi.
    CONMEO;
    
    echo $str;
?>

Kết quả:
        
Con $congi mà trèo cây $caygi, 
Hỏi thăm chú chuột đi đâu vắng nhà. 
Chú chuột đi chợ đường xa.
Mua mắm mua muối giỗ cha chú $congi.

CÁC PHÉP TOÁN VÀ HÀM VỀ CHUỖI TRONG PHP

Có khả nhiều hàm xây dựng sẵn của PHP về chuỗi, bạn tham khảo thêm ở đây STRING. Sau đây chỉ đề cập vài hàm hay dùng:

Nối các chuỗi ký tự trong PHP

Để nối các chuỗi lại với nhau sử dụng toán tử nối . nhớ là dấu chấm chứ không phải +

Ví dụ:

<?
    $str1 = 'I';
    $str2 = 'PHP';

    $str3 = $str1.' learn '.$str2;

    echo $str3;
?>

//OUT: I learn PHP

Hàm hay dùng về chuỗi trong PHP

HàmVí dụ
strlen(string $string) mb_strlen(string $str, $encoding) Lấy chiều dài chuỗi. mb_strlen dùng dạng nhiều byte như Unicode
$str = 'Chào';
echo strlen($str);
//OUT: 5

echo mb_strlen($str);
//OUT: 4
str_word_count Đếm số từ trong chuỗi (từ chứ không phải chữ).
 $str = 'Hello World PHP!';
 echo str_word_count($str);
 //OUT: 3
strrev(string $string) Đào ngược chữ từ cuối lênh đầu.
$words = array(
    'desserts', 'live', 'knits',
    'sports', 'pupils', 'raw',
    'smart', 'snug', 'lived',
    'god', 'time', 'deliver', 'star');

foreach ($words as $word)
    echo $word.' - '.strrev($word).PHP_EOL;
//OUT:
    
desserts - stressed
live - evil
knits - stink
sports - strops
pupils - slipup
raw - war
smart - trams
snug - guns
lived - devil
god - dog
time - emit
deliver - reviled
star - rats
strpos($string, $substring) Kiểm tra xem chuỗi $string có chứa chuỗi $substring. Nếu có thì trả về giá trị vị trí đầu tiên bắt gặp. nếu là FALSE thì không thấy. Ví dụ kiểm tra xem có chứa chuỗi:
if (strpos($str, $str_search) !== false) {
   //Có chứa
}
str_replace($str_search, $str_rep, $str) Tìm và thay thế chuỗi.
    echo str_replace(
        "Learing",
        "Welcome, Learing",
        "Learing PHP!");
    //OUT:
    Welcome, Learing PHP!
str_repeat($str, $multiplier) Tạo ra chuỗi bằng cách gép $str thành $multiplier lần.
$str = '*';
for ($i=1; $i<=10; $i++)
    echo str_repeat($str, $i).PHP_EOL;

    //OUT:
*
**
***
****
*****
******
*******
********
*********
**********

strtolower($string) Chuyển chuỗi thành chữ thường
 $str = 'Hello World!';
 echo strtolower($str);
 //OUT: hello world!
strtoupper($string) Chuyển chuỗi thành chữ in.
 $str = 'Hello World!';
 echo strtoupper($str);
 //OUT: HELLO WORLD!
strtr($str, $from, $to) Tìm và thay thế ký tự trong chuỗi, thay từng byte nên khá nhanh
 $str = 'Learn PHP!';
 echo strtr($str,'LP','lp');
 //OUT: learn pHp!
strtr($str, array $replace_pairs) Tìm và thay thế ký tự trong chuỗi. (Dùng cách này convert tiếng việt không dấu)
 $str = 'Lập bà lập bập!';
 $ar = array('ậ'=>'a', 'à'=>'a');
 echo strtr($str, $ar);
 //OUT: Lap ba lap bap!
substr($string, $start ,$length) Trích xuất chuỗi, bắt đầu từ vị trí $start với chiều dài $length, nếu không có $length sẽ trích xuất đến hết chuỗi. Nếu chuỗi UNICODE (nhiều byte một ký tự) có thể dùng mb_substr với tham số tương tự.
 $str = 'Lap ba lap bap!';
 echo mb_substr($str, 7);
 //OUT: lap bap!
 $str = 'Lập bà lập bập!';
 echo mb_substr($str, 7);
 //OUT: lập bập!
trim Loại bỏ khoảng trắng của chuỗi.
is_string($var) Kiểm tra xem $var có phải là chuỗi.
empty($var) Nếu chuỗi rỗng trả về true. Chuỗi rỗng như "", null, '0'

VÀI ĐOẠN CODE VỀ CHUỖI

Ngắt chuỗi thành chuỗi ngắn hơn

Ví dụ, mẩu tin dài, chỉ giữ lại 20 từ đầu tiên và dấu ...

function truncateString($str, $maxChars = 40, $holder = "...")
{
    if (strlen($str) > $maxChars) {
        return trim(substr($str, 0, $maxChars)) . $holder;
    } else {
        return $str;
    }
}