Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> аналог strip_tags для атрибутов, существует? 
V
    Опции темы
bars80080
Дата 7.2.2008, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



сорри наверно уже обсуждалось

есть ли функция типа strip_tags, но для атрибутов
чтобы изничтожала атрибуты во всех тэгах ?

спасибо
PM MAIL WWW   Вверх
skyboy
Дата 7.2.2008, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



встроенной нет. но в обсуждении strip_tags первым в списке комментариев стоит как раз такая вот самописная "strip_attributes". и ниже есть разные "вариации на тему". 
конечно, если самому неохота писать код, который будет проходиться по тексту и заменять <\s*(\w*).*> на <$(1)>
PM MAIL   Вверх
sTa1kEr
Дата 7.2.2008, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



bars80080, почитайте эту тему http://forum.vingrad.ru/forum/topic-177312.html тут решался аналогичный вопрос.
PM MAIL   Вверх
bars80080
Дата 7.2.2008, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



н-да, обсуждалась уже тема "почему пхп-программисты не хотят думать"

относится как ко мне, так и к скайбою

я запросил, исходя из того, что функция по идее должна быть популярна, наверняка, ведь другим попадалась такая задача
пока ждал ответа написал нужный мне парсер (к другой задаче),
смотрю сюда - skyboy с лёгким раздражением кинул ссылку
пошёл я по ссылке, в итоге потерял полчаса, там тоже толпа умных чуваков о чём-то судачат, предлагают наперебой аццкие функции собственного производства, но то ли у меня руки кривые, то ли где не разглядел, но ничего путного не нашёл

вернулся и за пять минут написал нужную функцию, мож пригодится кому-то:

Код
function strip_atr($s) {
    $a = explode('<', $s);
    for($i = 0; isset($a[$i]); $i++) {
        $b = explode('>', $a[$i]); 
        $c = strpos($b[0], ' ');
        if(!empty($c)) {            
            $b[0] = substr($b[0], 0, $c); } 
        $a[$i] = implode('>', $b); }
    $s = implode('<', $a);
    return $s; }

PM MAIL WWW   Вверх
GeneralElectric
Дата 7.2.2008, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 797
Регистрация: 11.1.2008

Репутация: 13
Всего: 16



внимательно в функцию не вчитывался, но сдается мне, что от тега < img src=""> она оставит <>
Да и из <img
src=""> особо ничего не вырежет...
PM MAIL   Вверх
bars80080
Дата 7.2.2008, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



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

но в процессе эксплуатации отрегулирую, пока она полностью удовлетворила мои запросы
PM MAIL WWW   Вверх
source777
Дата 7.2.2008, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 2
Всего: 56



Цитата(bars80080 @  7.2.2008,  16:09 Найти цитируемый пост)
и за пять минут написал нужную функцию
Долго, надо было регулярки сразу заюзать, а то её ещё долго регулировать придётся...
Код

  $html = "  < div  class='line' >
    <div class='left'>&nbsp;</div>
    <div class='right'>a<br>b<br>с<br>d</div>
  </div>
  <div style='clear: both; height: 1px;'></div>
  <hr>
  <div class='line'>
    <div class='left'><img
         src='logo.gif' /></div>
    <div class='right'>&nbsp;</div>
  </div>
  <div style='clear: both; height: 1px;'></div>";

  $html = preg_replace("/<\s*(\w+)[^\/>]*/msi", "<$1", $html);

  print "<pre>".htmlspecialchars($html)."</pre>";





--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
bars80080
Дата 7.2.2008, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



ну, вот видишь, могёте когда нужно - прямой ответ

у Сталкера, там бы посоображать пришлось, т.к. с регулярками я не очень...

спасибо всем

Это сообщение отредактировал(а) bars80080 - 7.2.2008, 18:54
PM MAIL WWW   Вверх
GeneralElectric
Дата 7.2.2008, 19:06 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 797
Регистрация: 11.1.2008

Репутация: 13
Всего: 16



Вообще-то, не очень понятная задача.
теоретически, она оставляет только односложные теги - <b><i><s>
но от многосложных она будет оставлять некрасивые обрубки, типа <a>qwefqwef</a>? или <img>, который будте вылезать крестиком, наверное.

Если задача разрешить только односложные теги, то регулярку я бы переписал
PM MAIL   Вверх
bars80080
Дата 7.2.2008, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



нет, задача была именно такой, как я её описал - срезать все атрибуты и больше ничего, просто обработать текст для заливки в БД, где тэги очень удобно позволяют ориентироваться для структуры, а атрибуты, в силу их безстандартности, не позволяли подключать парсер
PM MAIL WWW   Вверх
source777
Дата 8.2.2008, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 2
Всего: 56



Цитата(bars80080 @  7.2.2008,  18:54 Найти цитируемый пост)
там бы посоображать пришлось, т.к. с регулярками я не очень...
Это большое упущение, советую изучить данную тему, пригодится...

Цитата(GeneralElectric @  7.2.2008,  19:06 Найти цитируемый пост)
теоретически, она оставляет только односложные теги - <b><i><s>
но от многосложных она будет оставлять некрасивые обрубки, типа <a>qwefqwef</a>? или <img>,
 от img останется <img/> smile, кстати почти все теги кроме названных двух могут обойтись и без атрибутов...
 
Цитата(GeneralElectric @  7.2.2008,  19:06 Найти цитируемый пост)
Если задача разрешить только односложные теги, то регулярку я бы переписал 
А вот в этом как раз сила регулярных выражений, их можно легко и быстро модернизировать под уточнённую задачу...



--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.3220 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.