PHP: Изрежете откъса си от думата, като използвате strrpos

html код

Ако работите с PHP и искате да покажете само откъс от изходния си текст и да го отрежете на няколко знака, вашият откъс може да изглежда грозен, ако е направен в средата на низа. Трябваше да напиша функция, за да направя това в ASP и в ASP.NET, която основно циклира от последния символ обратно, за да намери последното пространство и да го отсече там. Неприятно и малко прекалено много. Всъщност можете да видите това в действие в моя дом страница където предоставям само първите 500 знака.

Бях напълно готов да разработя същата функция с PHP днес, но установих (както обикновено), че PHP вече има функция, която го прави, strrpos.

Старият код ще вземе подниз ($ съдържание) от първия символ до максималния брой символи, който искате ($ maxchars):

$ content = substr ($ content, 0, $ maxchars); echo $ съдържание;

Новият код:

$ content = substr ($ content, 0, $ maxchars); $ pos = strrpos ($ съдържание, ""); if ($ pos> 0) {$ content = substr ($ content, 0, $ pos); } echo $ съдържание;

Така че новият код първо отрязва съдържанието при ограничението на броя знаци, което търсите. Следващата стъпка обаче е да се търси последното интервал („“) в съдържанието. $ pos ще завърши като тази позиция. Сега просто се уверявам, че в съдържанието всъщност има място, като попитам дали $ pos> 0. Ако няма, то просто ще отреже съдържанието на броя знаци, които съм поискал. Ако има място, то ще отсече изящно съдържанието ми в пространството.

Това е хубав начин за използване на комбинацията от максималния брой знаци и отрязването му при думата. Надявам се да ти харесва!

И съм сигурен, че ще разбера дали има функция ASP.NET, която прави това ... Не можах да намеря такава.

7 Коментари

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

    Ако $ content първоначално е ПО-КЪСО от $ maxchars, написаният код все още ще изглежда отдясно наляво за интервал и ще изреже последната дума. Можете или да обедините интервал в края на $ съдържание, или да направите if (strlen () ...)

  5. 5

    Изглежда, че това работи като функция (адресиране на предишния коментар):

    функция showexcerpt ($ съдържание, $ maxchars) {

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

    $ content = substr ($ content, 0, $ maxchars);
    $ pos = strrpos ($ съдържание, "");

    ако ($ pos> 0) {
    $ content = substr ($ content, 0, $ pos);
    }

    върнете $ съдържание. "...";

    } Още {

    връща $ съдържание;

    }

    }

  6. 6

    Ами ако нашият последен знак е пунктуационен знак като точка, удивителен знак или въпросителен знак? За съжаление този код ще изтрие цялата дума, която предхожда споменатия пунктуационен знак.  

    Мисля, че е по-добре да напишете нещо малко по-стабилно.

  7. 7

Какво мислите?

Този сайт използва Akismet за намаляване на спама. Научете как се обработват данните за коментарите ви.