10/10/2018, 10:29

Xin hỏi các bạn về hàm cắt trong PHP

Mình có các hàm cắt trong file functions.php như sau:

PHP Code:
/************************************************************
Content Limit
************************************************************/

function wpn_content_limit($content$ilimit false)
{
    
$limit = ($ilimit) ? $ilimit 270;
    
$pad="...";
    
$content strip_tags($content);
    if(
strlen($content) > $limit)
    {
        
$content substr($content,0,$limit);
    }
    echo 
$content.$pad;
}

/************************************************************
Content Show
************************************************************/

function wpn_content_show($limit)
{
    if(
is_category() || is_archive())
    {
        if (!empty(
$post->post_excerpt))
        {
            
the_excerpt();
        }
        else
        {
            
wpn_content_limit(get_the_content(), $limit);
        }
    }
    else
    {
        
wpn_content_limit(get_the_content(), $limit);
    }

Mình dùng nó để cắt 1 chuổi bài viết ra index.php
Đây là hàm mình thể hiện ra index.php

PHP Code:
<?php wpn_content_limit (get_the_content(),400); ?>
Nhưng không hiểu sao nó chỉ hiện text, chứ các đoạn mã HTML mình gán trước đoạn text thì nó không hiện ra.


http://www.upanh.com/uploaded.php?mode=view&id=tznqlj

Mình muốn hiện cái ảnh đó trước bài viết thì phải sữa hàm như thế nào?

Chân thành cảm ơn các bạn giúp đỡ.
thuyduongcd viết 12:29 ngày 10/10/2018
Vì nó chứa cái dòng này:
Code:
$content = strip_tags($content);
Sở dĩ nó như vậy vì lý do an toàn. Bởi vì bạn có thể cắt ở vị trí bất kỳ nên không bảo đảm các thẻ của bạn sẽ toàn vẹn
ví dụ:
Code:
This is a <b>bold</b> text.
Nếu bạn cắt 13 ký tự (vị trí sau <b>) vậy là phần đóng thẻ b bị mất do đó toàn bộ phần sau nội dung này sẽ bold đậm hết.

Đó là một trong những lý do mà các tag cần phải bị clear hết.

P.S: Cái hàm này của wordpress thì phải
Mr.Triết viết 12:36 ngày 10/10/2018
Nếu cần giữ lại một vài thẻ quan trọng, bạn sửa lại như sau
Code:
$content = strip_tags($content, "<b><i><u><strong><a><ul><li>");
Bạn có thể thêm vào danh sách các thẻ cần giữ lại tùy theo yêu cầu sử dụng.

Chúc thành công.
thuyduongcd viết 12:38 ngày 10/10/2018
Như đã phân tích ở trên, việc giữ lại các thẻ này khá nguy hiểm, có thể phá vỡ layout bất cứ lúc nào, chưa nói ảnh hưởng đến số ký tự sẽ lấy. Hơn nữa hàm này chủ yếu dùng tóm tắt nội dung (intro) nên không cần format gì nhiều, chỉ cần cho nó italic là được rồi.
tomraider viết 12:30 ngày 10/10/2018
Cảm ơn các bạn. Mình đã làm được rồi. Nhưng xin cho hỏi thêm, có cách nào dùng lệnh:

PHP Code:
$content strip_tags($content"<b><i><u><strong><a><ul><li>"); 
Mà vẫn lấy được đúng số ký tự cần lấy không?
jonifer viết 12:36 ngày 10/10/2018
Xin hỏi các bạn về hàm cắt chuỗi trong php
mình có đoạn code php như sau:
<p>
<img alt="" src="/thuysan/storage/images/hobt_s.jpg" style="width: 200px; height: 180px" />doan text</p>
<p>
doan text</p>
<p>
doan text</p>
mình mún lấy ra 3 cái text "doan text" thì phải làm sao ? Mong các bạn giúp mình.
thuyduongcd viết 12:30 ngày 10/10/2018
Code:
$content = strip_tags($content);
P.S: Hãy tôn trọng sự trong sáng của Tiếng Việt.
banmaytinhtl viết 12:40 ngày 10/10/2018
thuyduongcd nói hay lắm! mình làm bạn được không
Bài liên quan
0