Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MySQL - [решено] Удаление html тега из базы

Ответить
Настройки темы
MySQL - [решено] Удаление html тега из базы

Ветеран


Сообщения: 693
Благодарности: 51


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: Vitaliy21
Дата: 14-11-2013
Здравствуйте, нужна помощь составить SQL запрос или php скрипт по удалению одних тегов из одного столбца в базе данных.

Мне нужно превратить напримере такие ссылки:
Код: Выделить весь код
<a href="http://site.ru/123/0">текст1</a>
<a href="http://site.ru/tratata/123">текст2</a>
<a href="http://site.ru/01584"><span style="COLOR: #000000">текст3</span></a>
В обычных текст (неклекабельный), тоесть без тегов <a ...>...</a>
Результат из приведённого примера должен получится такой:
Код: Выделить весь код
текст1
текст2
<span style="COLOR: #000000">текст3</span>
Да и ещё, ссылок таких много, с одним доменом, но продолжение ссылок и текст будет разным, поэтому тут я так понимаю понадобится регулярное выражение?
Код: Выделить весь код
<a href="http://site.ru/[регулярное выражение]">[регулярное выражение]</a>
Помогите пожалуйста, кто разбирается в MySQL или в php, а то я в программирование мало что понимаю, а дело вроде как пустяковое...

Отправлено: 11:58, 14-11-2013

 

В Поисках Истины


Сообщения: 802
Благодарности: 135

Профиль | Отправить PM | Цитировать


Vitaliy21, можно составить простенький запрос к БД.

PHP код: Выделить весь код

UPDATE имя таблицы SET имя колонки Substring(имя колонкиinstr(имя колонки'>')+1, (instr(имя колонки'</a>') - 1)-instr(имя колонки'>')) 


Не уверен в правильности составления. Не знаком с функциями MySql. Для предотвращения проблем, попробуйте сначала выполнить выборку из таблицы и посмотреть результат.

PHP код: Выделить весь код

SELECT имя колонки Substring(имя колонкиinstr(имя колонки'>')+1, (instr(имя колонки'</a>') - 1)-instr(имя колонки'>')) FROM имя таблицы 


-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:08, 14-11-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Вредитель


Сообщения: 460
Благодарности: 126

Профиль | Отправить PM | Цитировать


С помощью PHP несложно.
Для начала из базы получаете нужную строку, потом
PHP код: Выделить весь код

$s=preg_replace("'<[\/\!]*a[^<>]*?>'si"''$s); 


и записываете ее обратно в базу.

-------
Все сказаное является только моим личным мнением.

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:47, 14-11-2013 | #3


Ветеран


Сообщения: 693
Благодарности: 51

Профиль | Отправить PM | Цитировать


Цитата LilLoco:
можно составить простенький запрос к БД. »
Спасибо, я проверил, Ваш запрос только удаляет конец тега "</a>"

Подскажите пожалуйста, как сделать чтобы при этом он удалял и начало тега, учитывая такие параметры? : <a href="http://site.ru/тут разное продолжение" target="_blank" title="какой-то текст">

Цитата DedAlex:
С помощью PHP несложно.
Для начала из базы получаете нужную строку, потом
Код: Выделить весь код
$s=preg_replace("'<[\/\!]*a[^<>]*?>'si", '', $s);
и записываете ее обратно в базу.
»
Можете подробной пожалуйста объяснить как это реализовать?

Отправлено: 17:22, 14-11-2013 | #4


Вредитель


Сообщения: 460
Благодарности: 126

Профиль | Отправить PM | Цитировать


Код для изменения.
PHP код: Выделить весь код

<?php

//Следующую строку необходимо отредактировать 
$db mysql_connect('host''user''password');
//Следующую строку необходимо отредактировать 
mysql_select_db('database');
//Следующую строку необходимо отредактировать 
$query "SELECT * FROM `table`";
$res mysql_query($query);
while(
$row mysql_fetch_array($res)){
    
$newlink=preg_replace("'<[\/\!]*a[^<>]*?>'si"''$row['link']);
//Следующую строку необходимо отредактировать 
    
mysql_query("UPDATE `table` SET `link` = '".$newlink."' WHERE `link` = '".$row['link']."';");
}
mysql_close($db);
?>

P.S. Попробуйте сначала на копии базы.

-------
Все сказаное является только моим личным мнением.

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:24, 14-11-2013 | #5


Ветеран


Сообщения: 693
Благодарности: 51

Профиль | Отправить PM | Цитировать


DedAlex, спасибо! Отредактировал, запустил, страничка долго висела, после 5-7 минут вылезла 504 Gateway Time-out

Но, я проверил, скрипт отработал как надо, он удалил большинство ссылок, но не все. Ссылки такого вида он оставил без изменения:

Код: Выделить весь код
<a href="http://site.ru/goods#p61633" target="_blank"><img align="center" src="/pictures/orig/5/536/5536.jpg" cwidth="50" cheight="64" owidth="50" oheight="64" imgid="5536" style="margin:5px;height: 64px;width: 50px" width="50" height="64" /></a>
Тоесть ссылка, внутри которой картинка, можно и в этом случае удалить ссылку оставив картинку?
Или он и так должен был её удалить, но не успел обработать все строки (их там очень много)?

Отправлено: 00:44, 15-11-2013 | #6


Вредитель


Сообщения: 460
Благодарности: 126

Профиль | Отправить PM | Цитировать


Цитата Vitaliy21:
Или он и так должен был её удалить, но не успел обработать все строки (их там очень много)? »
Должен убрать, не успел обработать. Попробуйте заменить запрос
PHP код: Выделить весь код

$query "SELECT * FROM `table` WHERE `link` LIKE '%\<a %'"

-------
Все сказаное является только моим личным мнением.

Это сообщение посчитали полезным следующие участники:

Отправлено: 11:49, 15-11-2013 | #7


Ветеран


Сообщения: 693
Благодарности: 51

Профиль | Отправить PM | Цитировать


Спасибо большое, отработало как надо!

Последний раз редактировалось Vitaliy21, 19-11-2013 в 10:39.


Отправлено: 12:57, 15-11-2013 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MySQL - [решено] Удаление html тега из базы

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
V. 2010 - Окончательное удаление почтового ящика из базы. goldsmith Microsoft Exchange Server 2 28-01-2013 20:26
[решено] Удаление полосы прокрутки в GUI (html-страница через GUICtrlCreateObj) sashadeg AutoIt 2 23-02-2011 01:36
[решено] Вытянуть содержание HTML тега с помощью регулярных выражений aesir AutoIt 4 28-08-2009 21:22
[решено] размещение данных выведенных из базы в таблице html dima1981 Вебмастеру 3 20-08-2008 02:29
Выбор из базы данных victory Вебмастеру 9 24-07-2003 19:34




 
Переход