Вырезать текст "ссылки", если он длиннее 30 символов - PullRequest
1 голос
/ 04 ноября 2011

У меня есть несколько html-ссылок, например

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

и мне нужно вырезать текст (не ссылку), если он длиннее, чем некоторые символы (скажем, 30). Поэтому ссылка должна выглядеть примерно так:

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

Как я могу это сделать? Regex? Я использую PHP и jQuery (но я бы хотел сделать это на стороне сервера).

Ответы [ 4 ]

7 голосов
/ 04 ноября 2011

Вероятно, есть метод регулярных выражений, но я бы выбрал простой substr().

if (strlen($title)>30) {
    $title=substr($title, 0, 10) . "..." . substr($title, -10);
}
2 голосов
/ 04 ноября 2011

Просто используйте 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; 
} 
1 голос
/ 04 ноября 2011

Если вы хотите, чтобы текст ссылки указывал на то, что он был усечен ...

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>
1 голос
/ 04 ноября 2011

Насколько я понимаю, вы не создаете эту страницу, а анализируете ее.Итак, во-первых, я бы предложил использовать синтаксический анализатор dom (я использую: http://simplehtmldom.sourceforge.net/), получить внутренний текст элемента привязки. Чем использовать метод substr (http://tr.php.net/manual/en/function.substr.php), чтобы его вырезать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...