Thủ thuật PHP : Cắt chuỗi mà không làm mất nghĩa

09/06/2012

Hôm nay mình sẽ hướng dẫn các bạn cách lấy ra chuỗi con mà không làm nó mất đi ý nghĩa, ví dụ nếu bạn muốn lấy 1 chuỗi con từ 1 đoạn văn thì bạn thường sử dụng hàm substr, tuy nhiên hàm này đôi khi làm cho chuỗi con trở nên khó hiểu, chúng ta cùng thử 1 ví dụ sau đây:

cat chuoi trong php

1
2
3
4
5
6
<?php
$mytext = "Chao Mung Ban Den Voi Thu Thuat Web";
$result = substr($mytext,0,7); 
echo $result;
return $str;
?>

Kết quả của của câu lệnh trên là xuất ra màn hình dòng chữ “Chao Mu” , vậy có cách nào giúp chúng ta lấy ra từng câu tùy vào số lượng câu mà chúng ta muốn hiển thị không, mình có 2 hàm sau giúp các bạn làm điều đó

Hàm thứ 1 :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
function _substr($str, $length, $minword = 3)
{
$sub = '';
$len = 0;
foreach (explode(' ', $str) as $word)
{
    $part = (($sub != '') ? ' ' : '') . $word;
    $sub .= $part;
    $len += strlen($part);
    if (strlen($word) > $minword && strlen($sub) >= $length)
    {
      break;
    }
 }
    return $sub . (($len < strlen($str)) ? '...' : '');
}
?>

Hàm trên sẽ chèn thêm dòng “…”  vào chuỗi con mà chúng ta lấy ra, nó giống như hàm substr nhưng nó không cắt từng kí tự mà chỉ cắt ra từng câu.
Ví dụ chúng ta áp dụng nó như sau :

1
2
3
 <?php
echo _substr('Chao Mung Ban Den Voi Thu Thuat Web',7);
?>

// xuất ra màn hình là “Chao Mung…”

Hàm thứ 2:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
function text_limit($str,$limit=10)
 {
 if(stripos($str," ")){
 $ex_str = explode(" ",$str);
 if(count($ex_str)>$limit){
 for($i=0;$i<$limit;$i++){
 $str_s.=$ex_str[$i]." ";
 }
 return $str_s;
 }else{
 return $str;
 }
 }else{
 return $str;
 }
 }
?>

Hàm trên hoạt động như sau:
– Chỉ định bao nhiêu câu mà bạn muốn hiển thị
– Tìm câu cuối cùng hiển thị là gì
– Nếu câu cuối không phải là khoảng trắng thì nó sẽ tìm đến câu kế tiếp và tìm cho đến khi thấy khoảng trắng.
– Hiển thị ra màn hình
Ví dụ dùng cho hàm trên như sau :

1
2
3
4
 <?php
echo text_limit('Chao Mung Ban Den Voi Thu Thuat Web',7); Xuất ra "Chao Mung Ban Den Voi Thu Thuat "
echo text_limit('Chao Mung Ban Den Voi Thu Thuat Web',3); Xuất ra "Chao Mung Ban"
?>

Vậy là từ nay bạn không cần phải lo vấn đề lấy chuỗi con rồi phải không, hy vọng 2 hàm trên sẽ có ích cho các bạn , và chúc các bạn thành công.

Chuyên Mục:

Bài viết được đăng bởi webmaster

Nếu các bạn thấy bài viết hữu ích thì giúp mình Like cái nhé !
  • huyhieu

    còn một cách khác theo mình đơn giản hơn: substr kết hợp với strpost

  • Vu

    Hi bạn, mình thấy hàm _substr chạy không đúng, nếu gõ tiếng việt có dấu

    echo _substr(‘Chào Mừng Bạn Den Voi Thu Thuat Web’,18); // Chào Mừng Bạn…

    echo _substr(‘Chào Mừng Bạn Den Voi Thu Thuat Web’,19); // Chào Mừng Bạn Den Voi Thu Thuat…

    khai báo chênh lệch nhau có 1 ký tự, nhưng nó hiển thị rất khác biệt