Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Удаление тегов со страницы

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Albertino
Отправлено: 30 Ноября, 2011 - 15:05:11
Post Id


Гость


Покинул форум
Сообщений всего: 92
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




есть страница,например
CODE (html):
скопировать код в буфер обмена
  1. <html>
  2.  
  3. <head>
  4.   <title></title>
  5. </head>
  6.  
  7. <body>
  8. <a href=""><b>link 1</b></a>
  9. <a href=""><i>link 2</i></a>
  10. <a href="">link 3</a>
  11. <a href="">link 4</a>
  12. <a href="">link 5</a>
  13. <a href="">link 6</a>
  14. </body>
  15.  
  16. </html>

как удалить все теги <a>(на javascript), чтоб при этом "внутренность" тега осталась или заменить, например, <a href=""><b>link 1</b></a> на <b>link 1</b>, те должно в результате быть:
CODE (html):
скопировать код в буфер обмена
  1. <html>
  2.  
  3. <head>
  4.   <title></title>
  5. </head>
  6.  
  7. <body>
  8. <b>link 1</b>
  9. <i>link 2</i>
  10. link 3
  11. link 4
  12. link 5
  13. link 6
  14. </body>
  15.  
  16. </html>

пробовал с помощью DOM:
CODE (javascript):
скопировать код в буфер обмена
  1. var elements = document.getElementsByTagName("a");
  2. for(var i=0;i<=elements.length-1;i++){
  3. elements[i].parentNode.removeChild(elements[i]);
  4. }

но он удаляет весь тег вместе со внутренностями

(Отредактировано автором: 30 Ноября, 2011 - 15:30:09)

 
 Top
Ch_chov
Отправлено: 30 Ноября, 2011 - 15:49:56
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




Интересно, а зачем это понадобилось? Почему обязательно javascript?
 
 Top
Albertino
Отправлено: 30 Ноября, 2011 - 16:03:44
Post Id


Гость


Покинул форум
Сообщений всего: 92
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




Ch_chov пишет:
Интересно, а зачем это понадобилось? Почему обязательно javascript?

Там такие замуты
нужно в из "версии для печати" убрать ссылки, оставить только текст ссылки, если делать не на js, то придется править туевухучу шаблонов(и все это ручками), вот чтоб этого не делать надо сделать на js, чтоб после загрузки страници на js резлись теги <a> и </a>
 
 Top
Ch_chov
Отправлено: 30 Ноября, 2011 - 16:19:11
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




Проще просто скрыть их через CSS.
 
 Top
Albertino
Отправлено: 30 Ноября, 2011 - 16:30:08
Post Id


Гость


Покинул форум
Сообщений всего: 92
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




Ch_chov пишет:
Проще просто скрыть их через CSS.

проще, не проще главное как?

А решалось все довольно просто
CODE (javascript):
скопировать код в буфер обмена
  1. var str = document.body.innerHTML;
  2. str.replace(/<a[^>]*>([^<]*)<\/a>/img, "$1");
  3. document.body.innerHTML = str;

img это: i - регистро независимость, m - многотрочность, g - плобальность(чтоб заменил не 1 элемент, а все)

(Отредактировано автором: 01 Декабря, 2011 - 08:39:30)

 
 Top
Ch_chov
Отправлено: 30 Ноября, 2011 - 16:53:01
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




CODE (css):
скопировать код в буфер обмена
  1. a {
  2.     cursor: default;
  3.     color: black;
  4.     text-decoration: none;
  5. }
 
 Top
Albertino
Отправлено: 01 Декабря, 2011 - 08:21:58
Post Id


Гость


Покинул форум
Сообщений всего: 92
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




Ch_chov пишет:
CODE (css):
скопировать код в буфер обмена
  1. a {
  2.     cursor: default;
  3.     color: black;
  4.     text-decoration: none;
  5. }

При таком подходе ссылка остается ссылкой, просто меняется ее оформление, а мне надо было чтоб ссылка заменялась именно на простой текст
 
 Top
DeepVarvar Супермодератор
Отправлено: 01 Декабря, 2011 - 08:27:10
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Ато принтер знаете ли, перейдет по этой нежелательной ссылке и распечатает с гордостью не ту страницу...
 
 Top
Albertino
Отправлено: 01 Декабря, 2011 - 08:28:47
Post Id


Гость


Покинул форум
Сообщений всего: 92
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




При моем подходе возникла проблема: какую регулярку написать, чтоб ссылки следующего вида
<a href="javascript: window.close();">закрыть</a><br />
<a href="javascript:window.print();">печатать</a>
не обрезались и чтоб теги внутри <a></a> тотжеставались, те из ссылки вида
<a><b>text</b></a> должна стать <b>text</b>
(Добавление)
DeepVarvar пишет:
Ато принтер знаете ли, перейдет по этой нежелательной ссылке и распечатает с гордостью не ту страницу...

не в том проблема, пользователь может нажать на ссылку и его перебросит на нормальную страницу(не принт версию)

(Отредактировано автором: 01 Декабря, 2011 - 08:40:47)

 
 Top
Viper
Отправлено: 01 Декабря, 2011 - 09:09:30
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




Albertino вам надоест это делать на JS. Сделайте это 1 раз на стороне сервера. Вы потеряете в скорости обработки на JS значительно больше чем в запросе к серверу и БД.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Albertino
Отправлено: 01 Декабря, 2011 - 09:27:09
Post Id


Гость


Покинул форум
Сообщений всего: 92
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




Viper пишет:
Albertino вам надоест это делать на JS. Сделайте это 1 раз на стороне сервера. Вы потеряете в скорости обработки на JS значительно больше чем в запросе к серверу и БД.

проблема в том что блоки которые выводятся в "версию для печати" берутся из разных модулей(и не всегда из одних и тех же), в формировании страницы участвует как минимум 3разных модуля и для каждой страницы они свои(конечно на они могут повторятся) и плюс используется шаблонизтор smarty, так что все ссылки уже прописаны в шаблонах и каждый модуль использует свой шаблон(а бывает и не один, внутри шаблона подключается еще один).
Чтобы Сделать это все на стороне сервера придется перелопатить вообще всю систему(и уж поверте она не маленькая), переписать все шаблоны, так что я склонен сделать это на JS

Вообщем скажу так,что на стороне сервера это не сделать, нужно все это сделать именно после загрузки страницы браузером

(Отредактировано автором: 01 Декабря, 2011 - 10:31:11)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB