我有一个博客网站,其中列出了主页上的所有最新博客,其中包含照片,有限文本以及完整博客文章的文本链接。问题是,如果我在博客文本中有一个标签,它会妨碍博客链接。
我的意思是:
如果这是我的博文 - “Hello, I am wayne, writer of <a href="website.com">Bloggers Weekly</a> and this is my first article
”
我想将其缩写为显示40个字符,或者“Hello,我是Wayne,Bloggers W的作者...阅读更多”
“阅读更多”链接未正确显示,因为在原始html中已有<a>
标记,可防止第二个链接正常工作。有没有办法解决这个问题?
答案 0 :(得分:1)
您可以使用strip_tags从字符串中删除HTML标记。
答案 1 :(得分:0)
您可以在回复博客文章之前使用strip_tags删除HTML标记。
echo substr(strip_tags($blog_post),0,40);
答案 2 :(得分:0)
你可以在缩短字符串之前检查小于符号的开口,或者如果你想保留链接则延长字符串。
$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个字符。
这对条带标签的好处是,如果您不希望它成为链接,您不会留下应该是文本中的链接的东西。 ie ..'点击此处'不可点击的文字。
答案 3 :(得分:0)
试试这个,
$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;
答案 4 :(得分:0)
阅读更多链接无法正常工作,因为当您使用substr时,substr也会包含部分锚标记。因此,更好的方法是首先删除标签,然后将锚标签应用于“仅阅读更多”。
<?
echo substr(strip_tags($blog),0,40) . "<a href='#link'>Read More </a>";
?>