PHP: обрежьте отрывок по слову, используя strrpos

HTML-код

Если вы работаете с PHP и хотите показать только отрывок из исходного текста и обрезать его по определенному количеству символов, отрывок может выглядеть некрасиво, если он сделан в середине строки. Мне пришлось написать функцию для этого в ASP и ASP.NET, которая в основном циклически переключалась с последнего символа назад, чтобы найти последний пробел и вырезать его там. Немного мерзко и немного излишне. Вы можете увидеть это в действии у меня дома страница где я указываю только первые 500 символов.

Я был полностью готов разработать ту же функцию с PHP сегодня, но обнаружил (как обычно), что у PHP есть функция, которая уже делает это, стррпос.

Старый код возьмет подстроку ($ content) от первого символа до максимального количества символов, которое вы хотите ($ maxchars):

$ content = substr ($ content, 0, $ maxchars); echo $ content;

Новый код:

$ content = substr ($ content, 0, $ maxchars); $ pos = strrpos ($ content, ""); если ($ pos> 0) {$ content = substr ($ content, 0, $ pos); } echo $ content;

Таким образом, новый код сначала обрезает контент до предела символов, который вы ищете. Однако следующим шагом будет поиск последнего пробела ("") в содержимом. $ pos станет этой позицией. Теперь я просто проверяю, действительно ли в контенте есть пробел, спрашивая, если $ pos> 0. Если нет, он просто обрежет содержимое на указанном мной количестве символов. Если есть место, он изящно обрежет мой контент в этом месте.

Это хороший способ использования комбинации максимального количества символов и обрезки его у слова. Надеюсь, вам понравится!

И я уверен, что выясню, есть ли функция ASP.NET, которая делает это… Я не смог ее найти.

7 комментариев

  1. 1
  2. 2
  3. 3
  4. 4

    Если $content изначально КОРОЧЕ, чем $maxchars, написанный код по-прежнему будет смотреть справа налево на наличие пробела и обрезать последнее слово. Вы можете либо соединить пробел в конце $content, либо выполнить if (strlen()…)

  5. 5

    Казалось, это работает как функция (обращаясь к предыдущему комментарию):

    функция showexcerpt($content, $maxchars) {

    если (strlen($content) > $maxchars) {

    $content= substr($content, 0, $maxchars);
    $pos = strrpos($content, " ");

    если ($pos>0) {
    $content = substr($content, 0, $pos);
    }

    вернуть $контент. «…»;

    } Еще {

    return $ content;

    }

    }

  6. 6

    Что, если наш последний символ — это знак препинания, такой как точка, восклицательный или вопросительный знак? К сожалению, этот код сотрет все слово, предшествующее указанному знаку препинания.  

    Я думаю, вам лучше написать что-нибудь посерьезнее.

  7. 7

Как вы думаете?

Этот сайт использует Akismet для уменьшения количества спама. Узнайте, как обрабатываются ваши данные комментариев.