PHP: Відріжте уривок на слово за допомогою strrpos

HTML-код

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

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

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

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

Новий код:

$ content = substr ($ content, 0, $ maxchars); $ pos = strrpos ($ вміст, ""); if ($ pos> 0) {$ content = substr ($ content, 0, $ pos); } echo $ content;

Тож новий код спочатку відсікає вміст на рівні символів, який ви шукаєте. Однак наступним кроком є ​​пошук останнього пробілу (”“) у вмісті. $ pos закінчиться, будучи такою позицією. Тепер я просто переконуюсь, що насправді є вільний простір у вмісті, запитуючи, чи $ pos> 0. Якщо цього немає, він просто відріже вміст за кількістю символів, які я запитав. Якщо є місце, це витончено відріже мій вміст у космосі.

Це приємний спосіб використання комбінації максимальної кількості символів та обрізання цього слова. Сподіваюсь тобі подобається!

І я впевнений, що з’ясую, чи існує функція ASP.NET, яка робить це ... Я не змогла її знайти.

7 Коментарі

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

    Якщо $ вміст спочатку коротший, ніж $ maxchars, код, як написано, все одно буде виглядати справа наліво для пробілу та вирізати останнє слово. Ви можете або об'єднати пробіл в кінці вмісту $, або зробити if (strlen () ...)

  5. 5

    Здавалося, це працює як функція (звертаючись до попереднього коментаря):

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

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

    $ content = substr ($ content, 0, $ maxchars);
    $ pos = strrpos ($ вміст, "");

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

    повернути вміст $. "…";

    } Ще {

    return $ content;

    }

    }

  6. 6

    Що робити, якщо наш кінцевий символ - це розділові знаки, такі як крапка, знак оклику чи знак запитання? На жаль, цей код видалить все слово, що передує зазначеному пунктуаційному символу.  

    Я думаю, тобі було б краще написати щось трохи більш надійне.

  7. 7

Що ви думаєте?

Цей сайт використовує Akismet для зменшення спаму. Дізнайтеся, як обробляються ваші дані коментарів.