среда, 23 сентября 2009 г.

Удаление тэгов из строки текста при помощи strip_tags

Предположим, что нам требуется вывести часть новостного сообщения в виде строки простого текста, используя при этом текст форматированный. К примеру, определённое количество символов, после которых идёт ссылка на полный текст новости со словами "читайте далее...". Довольно распространённый способ генерации анонса новости.

Самое сложное здесь убрать из форматированного текста все тэги, оставив при этом сам текст новости. Но эту задачу нам поможет решить функция strip_tags(). Первым параметром она принимает форматированную в html строку, а вторым - тэги, которые всё же нужно оставить. Например, тэги абзаца.


$str = "<p><strong>жирный</strong> <em>курсив</em>.</p>";
echo $str;
echo strip_tags($str, "<p>");

Обратите внимание, в каком виде записано исключение - в виде открывающего тэга. Смотрим результат:


<p><strong>жирный</strong> <em>курсив</em>.</p>
<p>жирный курсив.</p>

Как видим, из второй строки были удалены все тэги, кроме абзаца. Если в функцию не передавать второй параметр, то будут удалены вообще все тэги. Если требуется к исключению добавить ещё тэги, то просто пишем их открывающие тэги подряд в одной строке.

вторник, 8 сентября 2009 г.

Повтор одной строки несколько раз

Бывают такие специфические задачи в веб-деве, когда требуется вывести одну и ту же строку подряд n-ое количество раз. Как правило, это требуется для красивого форматирования данных.

Например, вам требуется поставить несколько переносов строки подряд (тэг br). Вы конечно можете их прямо в коде и прописать. Но можно прибегнуть к стандартной функции PHP str_repeat() и выполнить эту же задачу более элегантно.

$str = "Привет!";
echo str_repeat($str, 5);

В результате получаем следующее:

Привет!Привет!Привет!Привет!Привет!

понедельник, 7 сентября 2009 г.

Смешать символы в строке

str_shuffle() - данная функция настолько специфична, что её применение я вижу только в играх. Или для генерации "случайных" паролей.

$str = "ПРИВЕТ";
echo str_shuffle($str);

Итак, имеем строку текста. На выходе получаем мешанину, причём каждый раз разную. Несколько результатов работы функции:

  • ВЕТПРИ
  • РТПИЕВ
  • ПИТВРЕ
  • ИПРВЕТ

Замечание: мне не удалось заставить функцию корректно работать с кодировкой UTF-8. Поэтому если работаете с Юникодом, то придётся делать преобразования (функция iconv).