PHP substr阻止了由html标记引起的链接

时间:2014-02-20 09:12:06

标签: php html substring

我有一个博客网站,其中列出了主页上的所有最新博客,其中包含照片,有限文本以及完整博客文章的文本链接。问题是,如果我在博客文本中有一个标签,它会妨碍博客链接。

我的意思是:

如果这是我的博文 - “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>标记,可防止第二个链接正常工作。有没有办法解决这个问题?

5 个答案:

答案 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>";

?>