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

HTML-код

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

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

Старый код возьмет подстроку ($ 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) {

    if (strlen ($ content)> $ maxchars) {

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

    if ($ pos> 0) {
    $ content = substr ($ content, 0, $ pos);
    }

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

    } Еще {

    return $ content;

    }

    }

  6. 6

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

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

  7. 7

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

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