[英]PHP substr prevents link due to html tag
我有一個博客網站,該網站列出了首頁上的所有最新博客,包括照片,有限的文字,然后是指向完整博客文章的文本鏈接。 問題是,如果我在博客文本中有一個標簽,它將妨礙博客鏈接。
我的意思是:
如果這是我的博客文章-“ Hello, I am wayne, writer of <a href="website.com">Bloggers Weekly</a> and this is my first article
”
我想將其縮寫為顯示40個字符,或者“您好,我是韋恩,Bloggers W ...的作家...閱讀更多”
Read More鏈接無法正確顯示,因為在原始html中已經有一個<a>
標記,該標記會阻止第二個鏈接正常工作。 有沒有辦法解決?
您可以使用strip_tags從字符串中刪除HTML標簽。
在回顯博客文章之前,可以使用strip_tags刪除HTML標記。
echo substr(strip_tags($blog_post),0,40);
您可以在縮短字符串之前檢查開頭是否小於符號,或者如果要保留鏈接,則可以延長字符串。
$shortString = ($openPos = strpos($shortString, '<a')) !== false ? substr($shortString, 0 , ($openPos - 2) : substr($yourString,0,40);
這將在開幕前縮短它的時間
否則,如果您想保留鏈接,則可以使用相同的方法並擴展簡短說明
$shortString = ($closePos = strpos($yourString, '</a>')) !== false ? substr($yourString, 0 , ($closePos + 3) : substr($yourString,0,40);
我還沒有測試過,但是它應該保持鏈接完整。 請注意,如果關閉/打開“ a”標簽位於前40個字符之前,則這些字符串將使字符串少於40個字符。
相對於條形標簽,這樣做的好處是,如果您不希望將其作為鏈接,則不會在文本中留下應作為鏈接的內容。 即..不可單擊的“單擊此處”文本。
嘗試這個 ,
$string = "Hello, I am wayne, writer of Bloggers Weekly and this is my first article";
if (strlen($string) > 40)
{
// truncate string
$stringCut = substr($string, 0, 40);
$read_more = 'read more..'."<a href='website.com'>";
$string = substr($stringCut, 0, strrpos($stringCut, ' ')).$read_more;
}
echo $string;
Read More鏈接無法正常工作,因為當您使用substr時,substr也包括部分錨標記。 因此,更好的方法是先刪除標簽,然后將錨標簽應用於“只讀”。
<?
echo substr(strip_tags($blog),0,40) . "<a href='#link'>Read More </a>";
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.