Jun
25

Sử dụng một số hàm trong helper Text

Author admin    Category Kinh nghiệm, Manual     Tags

CakePHP đã xây dựng một số hàm để xử lý chuỗi trong helper Text, bài viết này sẽ hướng dẫn cách sử dụng các hàm trong helper này.

Trong controller, các bạn khai báo dùng helper Text

var $helpers = array('Text');

1. highlight($text, $phrase, $options = array())

- Định dạng một chuỗi trong chuỗi cho trước
- Ví dụ: bôi đậm chuỗi “liên hệ” trong chuỗi $my_text

$my_text = 'Mọi chi tiết xin vui lòng liên hệ ls_knx07@yahoo.com';
echo $text->highlight($my_text,'liên hệ',array('format'=>'<b>\1</b>'));
//kết quả
Mọi chi tiết xin vui lòng <b>liên hệ</b> ls_knx07@yahoo.com

2. stripLinks($text)

- Loại bỏ liên kết trong chuỗi
- Ví dụ:

echo $text->stripLinks('<a href="http://cakephpvn.org">Diễn đàn Cakephp VN</a>');
//kết quả
Diễn đàn Cakephp VN

3. autoLinkUrls($text, $htmlOptions = array())

- Tự động chèn liên kết cho url
- Ví dụ:

echo $text->autoLinkUrls('http://cakephpvn.org',array('target'=>'_blank'));
//kết quả
<a href="http://cakephpvn.org" target="_blank">http://cakephpvn.org</a>

4. autoLinkEmails($text, $options = array())

- Tự động chèn liên kết gởi mail
- Ví dụ:

$my_text = 'Mọi chi tiết xin vui lòng liên hệ ls_knx07@yahoo.com';
echo $linked_text = $text->autoLinkEmails($my_text);
//kết quả
Mọi chi tiết xin vui lòng liên hệ <a href="mailto:ls_knx07@yahoo.com">ls_knx07@yahoo.com</a>

5. autoLink($text, $options = array())

- Kết hợp 2 hàm ở mục 4 và mục 5
- Chuyển toàn bộ url và địa chỉ email thành liên kết HTML

6. truncate($text, $length = 100, $options = array())

- Cắt chuỗi theo độ dài qui định

$text: chuỗi cần cắt
$length: chiều dài cần lấy
$options: mảng tùy chọn. Trong đó bao gồm các key sau:

- ending: chuỗi kết thúc sau chuỗi được cắt, mặc định là …
- exact: nếu để false, hàm sẽ không cắt ngang một từ
- html: nếu để true, các thẻ HTML sẽ được giữ lại

Ví dụ:

echo $text->truncate('<a href="http://cakephpvn.org">Diễn đàn Cakephp VN</a>',40).'</br>';;
//kết quả
<a href="http://cakephpvn.org">Diễn đ...
echo $text->truncate('<a href="http://cakephpvn.org">Diễn đàn Cakephp VN</a>',40,array('ending'=>'...','exact'=>false,'html'=>true)).'</br>';;
//kết quả
<a href="http://cakephpvn.org">Diễn đàn Cakephp VN</a>

Hi vọng là bạn thấy được sự khác nhau khi sử dụng thêm mảng $options

7. toList($list, $and = ‘and’, $separator = ‘, ‘)

- Chuyển một danh sách thành chuỗi, cách nhau bởi $separator và nối phần tử cuối thông qua từ $and
- Ví dụ:

echo $text->toList(array(1,2,3,4,5),'và',',');
//kết quả
1,2,3,45

8. excerpt($text, $phrase, $radius = 100, $ending = ‘…’)

- Trích dẫn chuỗi trong chuỗi, xác định bởi một chuỗi cố định truyền vào và số ký tự trả về 2 bên chuỗi cố định đó.
- Hạn chế: hoạt động không chuẩn với tiếng Việt có dấu
- Bên dưới là ví dụ cho chuỗi tiếng Việt và chuỗi tiếng Anh

echo $text->excerpt('Tôi muốn tắt nắng đi, cho màu đừng nhạt mất. Tôi muốn buộc gió lại, cho hương đừng bay đi. Thơ tình Xuân Diệu.','đừng',8,'...').'</br>';
//kết quả
...màu đừng nhạt ...

Giải thích: tìm chữ “đừng“, lấy 8 ký tự trước và sau chữ “đừng” (kể cả chữ “đừng“). Tiếng Việt có dấu chạy có vẻ không chuẩn rồi!

echo $text->excerpt('Please, tell me: why do you kiss me?','do',6,'...').'</br>';
//kết quả
...why do you...

Giải thích: tìm chữ “do“, lấy 6 ký tự trước và sau chữ “do” kể cả chữ “do” (ở đây chỉ lấy thêm 4 ký tự vì bản thân chữ “do” đã có chiều dài là 2 rồi)

2 Comments to “Sử dụng một số hàm trong helper Text”

  • vinh 07/09/2011 at 8:42 pm

    Cho em hỏi về hàm cắt chuối trong cakephp, phần trên admin viết chưa rõ lắm nên hỏi lại kỹ hơn chút nhé
    Ví dụ:
    $con=$product['Product']['content'];
    $con=”Tôi đang học cakephp”;
    // trong content này nội dung quá dài, vậy ta sử dụng hàm j để cắt bỏ bớt ký tự đi.
    //sau khi bỏ
    $con=”Tôi đang học…”;

  • admin 09/09/2011 at 12:34 am

    Bạn dùng:

    $con=”Tôi đang học cakephp”;
    $con = $text->truncate($con,40,array('ending'=>'...','exact'=>false));

    Điều chỉnh số 40 theo ý bạn, cái ‘exact’=>false sẽ giúp cho từ không bị cắt ngang thành vô nghĩa

Post comment

Follow us on Twitter! Follow us on Twitter!
Diễn đàn CakePHP cho người Việt Nam

Bài viết mới

Thảo luận mới

TAG

Calendar

June 2010
M T W T F S S
    Jul »
 123456
78910111213
14151617181920
21222324252627
282930  

Lưu trữ

Blogroll

Thống kê

5 khách