Автор Тема: Удаление пробелов лишних, не трогая тэги.  (Прочитано 9541 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Boatman

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 50
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Как удалить все лишние пробелы из ХТМЛ текста, не портя тэгов? Подскажите плиз шаблон для preg_replace или стандартную функцию.

Например:

preg_replace(\'/\\\\s+/\', \' \', $string);

но тока чтоб он не делал этого внутри тэгов (между < и >).

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Удаление пробелов лишних, не трогая тэги.
« Ответ #1 : 16 Октября 2002, 20:05:12 »
А что - эта функция удаляет ЛИШНИЕ пробелы из текста?
Именно удаляет?
Я, наверное, что-то не понимаю в лишних пробелах...

Оффлайн Maniac

  • Ума нет - считай коллега
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 844
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Удаление пробелов лишних, не трогая тэги.
« Ответ #2 : 16 Октября 2002, 20:34:18 »
А почему в тегах не удалять? Ситуация бы резко упростилась... Насколько я помню, в тегах нет мест, критичных к количеству пробелов.
TANSTAAFL

Оффлайн Tronyx

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 826
  • +0/-0
  • 2
    • Просмотр профиля
Удаление пробелов лишних, не трогая тэги.
« Ответ #3 : 16 Октября 2002, 22:08:08 »
Цитировать
А почему в тегах не удалять? Ситуация бы резко упростилась... Насколько я помню, в тегах нет мест, критичных к количеству пробелов.

Если использовать регу Boatmana то проблемы будут.


preg_replace
(\'/\\s+/\', \' \', $string);
С уважением, Владимир Гончаренко - COPI# 93
Ролевая онлайн игра

Оффлайн rembo

  • Больной
  • Постоялец
  • ***
  • Сообщений: 219
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.v4.ru
Удаление пробелов лишних, не трогая тэги.
« Ответ #4 : 17 Октября 2002, 06:23:27 »
А какого $#^%& их вапще удалять? :) Хтмлину оптимизировать такиим способом что ли? :)
программист должен все сделать так, чтоб потом ничего не делать

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Удаление пробелов лишних, не трогая тэги.
« Ответ #5 : 17 Октября 2002, 11:21:00 »
rembo
Ну как вариант.
AS IS...

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Удаление пробелов лишних, не трогая тэги.
« Ответ #6 : 17 Октября 2002, 14:42:09 »
есть даже модуль под апач, который удаляет лишнее.
малораспространенный, впрочем - мод_гзип делает то же самое, и больше.

а замена вайтспейса на пробелы, я думаю, может повредить яваскрипты. там же есть зависимость от переврдов строк, кажется?

Оффлайн PilotV

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 59
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Удаление пробелов лишних, не трогая тэги.
« Ответ #7 : 17 Октября 2002, 15:58:52 »
Да, удаление лишних символов - переводов строк, пробелов, табуляций - вообще не то чтобы очень однозначная вещь для разных участков кода, как-то скрипты, теги, сам текст.
А еще все забыли про тег PRE
Не думаю, что эта задача стоит того, чтобы ею заниматься.
Я так думаю (c)


Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Удаление пробелов лишних, не трогая тэги.
« Ответ #9 : 18 Октября 2002, 02:18:51 »
вот такая идея.

в цикле, пока не кончится строка, бежим по ней
strpos-ом и ищем по очереди < и >
запоминаем позицию (в начале - 0)
если нашлось <
вырезаем от запомненной позиции до позиции <
проверяем флаг. Если не тег, то
производим нужные операции.
ставим флаг ,что ищем >
конкатим отрезаное к результирующей строке.
позиция=найденая позиция.
гото 1

ну как?
должно, вроде, работать быстро и без ошибок.

Оффлайн КшЫуфксрук

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 99
  • +0/-0
  • 0
    • Просмотр профиля
    • http://risearch.org/
Удаление пробелов лишних, не трогая тэги.
« Ответ #10 : 18 Октября 2002, 02:33:18 »
Пока не встретится JavaScript c "<" или ">". Самое лучшее для такой задачи - взять толковый парсер HTML кода. Для Перла такие есть, нужно поискать для ПХП.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Удаление пробелов лишних, не трогая тэги.
« Ответ #11 : 18 Октября 2002, 02:48:39 »
для пхп есть у антонио.
а в яваскрипте может встретиться < и >?
а зачем?
можно пример посмотреть? уж очень любопытно.

Оффлайн PilotV

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 59
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Удаление пробелов лишних, не трогая тэги.
« Ответ #12 : 18 Октября 2002, 03:22:39 »
[OFF]Вот любители говорить ни о чем...[/OFF]
Я так думаю (c)

Оффлайн Boatman

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 50
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Удаление пробелов лишних, не трогая тэги.
« Ответ #13 : 18 Октября 2002, 13:10:46 »
т. е. все, что между > и < вырезаем, обрабатываем, обработанным вставляем обратно?

А если текст полметра и там куча тэгов?

ЗЫ предполагается, что нету скриптов в тексте

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Удаление пробелов лишних, не трогая тэги.
« Ответ #14 : 18 Октября 2002, 13:50:15 »
я думаю, что текст на полметра будет обработан где-то за 0,01-0,001 секунды.
только не вырезаем и обрабатываем, а вырезаем, если не тег, то обрабатываем, и вклеиваем в новую строку. А если тег - то просто вклеиваем.
вставлять - это долго и неудобно получится.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28