计算字符串中的子字符串

时间:2012-03-16 09:32:32

标签: php

$string = "This is <a href="http://www.google">a</a> string with a link and I want to count the value of href attribute"

我有一个字符串,我想在html中输出该字符串中的10个字符。

问题是我回显了10个字符,但我也算了一个标签里面的字符。我可以简单地对"<a href=""></a>的strlen进行简单广告,但我现在永远不会知道href attr值的长度。我是如何找到这个值的?

编辑:

在博客上,您会在侧边栏中看到摘录,而不是漏洞帖子。我使用自定义函数通过计算字母来获取摘录。我希望帖子中有100个字符。我还想保留最终的链接。但该函数也计算字符“&lt; a href =”...“&gt;&lt; / a&gt;”最后的字符串更短。我只想找出动态生成的href值的长度,将其添加到我的摘录长度变量中。

这是否足够清楚,否则我会得到另一个减号?

3 个答案:

答案 0 :(得分:2)

使用strip_tags()函数删除里面的html,然后对已清理的字符串进行子串。

<?

$string = "i am <a href='http://www.google.com'>a</a> string with links";

$clean = strip_tags($string);

echo substr($clean,0,10);

?>

答案 1 :(得分:0)

我不确定我是否理解你要做的事情,但只是一个想法:

如果你从你的字符串中完成条带标记,并且有类似“这是一个带链接的字符串......”,那会有用吗?如果是这样,这就是你需要的......

$string = strip_tags($string);

答案 2 :(得分:0)

博客包含锚点,图片,标签和段落。

如果你想按照你的建议从博客中获取侧边栏的摘录,你定位第一段并删除它的标签,你删除标签的原因是因为你需要计算字符串而你不想要那些以你的方式。

 if(!function_exists('excerpt')){

     function excerpt($string, $len='300'){

         // look for the first instance of a closing paragraph tag
         // +4 to add the closing tag back, then strip them.
         $new_string = strip_tags(substr($string, 0, strpos($string, "</p>")+4));

         // now shorten the string to the required length.
         $str = substr($new_string, 0, $len);

         // find the last space in the string
         // this will be used as the offset in the last substr
         // so we dont end up with words like ( paragr ) 
         $index = strrpos($str, ' ');

         // finally return the new string and append ( ... )
         return substr($str, 0, $index) . '&hellip;';

         //you might want to wrap it in a <p> tag when done
     }
 } 

-

echo htmlspecialchars_decode(excerpt($string, 200));