如果长度超过30个字符,请剪切“链接”的文本

时间:2011-11-03 20:55:07

标签: php jquery string

我有一些HTML链接,比如

<a href="urlThatIneedToCutBecauseItIsTooLongAndWithoutEmptySpaceItDoestGetANewLineWhenItIsPrintedByTheBrowser">urlThatIneedToCutBecauseItIsTooLongAndWithoutEmptySpaceItDoestGetANewLineWhenItIsPrintedByTheBrowser</a>

我需要剪切文本(不是链接),如果它比某些字符长(比方说30)。所以链接必须成为像:

<a href="urlThatIneedToCutBecauseItIsTooLongAndWithoutEmptySpaceItDoestGetANewLineWhenItIsPrintedByTheBrowser">urlThatIne... ...TheBrowser</a>

我该怎么办?正则表达式?我正在使用PHP和jQuery(但我想在服务器端做它)。

4 个答案:

答案 0 :(得分:7)

可能有正则表达式方法,但我选择了一个简单的substr()

if (strlen($title)>30) {
    $title=substr($title, 0, 10) . "..." . substr($title, -10);
}

答案 1 :(得分:2)

只需使用css。

<a href="urlThatIneedToCutBecauseItIsTooLongAndWithoutEmptySpaceItDoestGetANewLineWhenItIsPrintedByTheBrowser">urlThatIne... ...TheBrowser</a>

a {  
    white-space: nowrap;  
    overflow: hidden;  
    text-overflow: ellipsis;  
    width: 300px;
    -o-text-overflow: ellipsis;  
    -ms-text-overflow: ellipsis; 
} 

答案 2 :(得分:1)

据我了解,您不是在创建此页面而是解析它。首先,我建议使用dom解析器(我使用:http://simplehtmldom.sourceforge.net/),获取锚元素的内部文本。比使用substr(http://tr.php.net/manual/en/function.substr.php)方法来削减它。

答案 3 :(得分:1)

如果您希望链接文本指示它已被截断...

function printLink( $url ){
    $text = strlen( $url ) > 30 
          ? substr( $url, 30 ) . '&hellip;'
          : $url;

    echo '<a href="' . $url . '">' . $text . '</a>';
}

printLink( 'urlThatIneedToCutBecauseItIsTooLongAndWithoutEmptySpaceItDoestGetANewLineWhenItIsPrintedByTheBrowser' );
// <a href="urlThatIneedToCutBecauseItIsTooLongAndWithoutEmptySpaceItDoestGetANewLineWhenItIsPrintedByTheBrowser">urlThatIneedToCutBecauseItIsT…</a>