MySQL - [решено] Удаление html тега из базы

Ответить
Аватара пользователя
Vitaliy21

MySQL - [решено] Удаление html тега из базы

Сообщение Vitaliy21 »

Здравствуйте, нужна помощь составить 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>

В обычных текст (неклекабельный), тоесть без тегов ...

Результат из приведённого примера должен получится такой:



Код:

Код: Выделить всё

текст1
текст2
<span style="COLOR: #000000">текст3</span>

Да и ещё, ссылок таких много, с одним доменом, но продолжение ссылок и текст будет разным, поэтому тут я так понимаю понадобится регулярное выражение?



Код:

Код: Выделить всё

<a href="http://site.ru/[регулярное выражение]">[регулярное выражение]</a>

Помогите пожалуйста, кто разбирается в MySQL или в php, а то я в программирование мало что понимаю, а дело вроде как пустяковое...
Аватара пользователя
LilLoco

Re: MySQL - [решено] Удаление html тега из базы

Сообщение LilLoco »

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





PHP код:

Код: Выделить всё

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






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





PHP код:

Код: Выделить всё

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



Аватара пользователя
DedAlex

Re: MySQL - [решено] Удаление html тега из базы

Сообщение DedAlex »

С помощью PHP несложно.

Для начала из базы получаете нужную строку, потом



PHP код:

Код: Выделить всё

$s=preg_replace("''si", '', $s); 






и записываете ее обратно в базу.
Аватара пользователя
Vitaliy21

Re: MySQL - [решено] Удаление html тега из базы

Сообщение Vitaliy21 »

Цитата LilLoco:



можно составить простенький запрос к БД.
MySQL - [решено] Удаление html тега из базы




Спасибо, я проверил, Ваш запрос только удаляет конец тега ""



Подскажите пожалуйста, как сделать чтобы при этом он удалял и начало тега, учитывая такие параметры? : [url=
http://site.ru/
Аватара пользователя
DedAlex

Re: MySQL - [решено] Удаление html тега из базы

Сообщение DedAlex »

Код для изменения.

Код: Выделить всё

<?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. Попробуйте сначала на копии базы.
Аватара пользователя
Vitaliy21

Re: MySQL - [решено] Удаление html тега из базы

Сообщение Vitaliy21 »

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>

Тоесть ссылка, внутри которой картинка, можно и в этом случае удалить ссылку оставив картинку?

Или он и так должен был её удалить, но не успел обработать все строки (их там очень много)?
Аватара пользователя
DedAlex

Re: MySQL - [решено] Удаление html тега из базы

Сообщение DedAlex »

Цитата Vitaliy21:



Или он и так должен был её удалить, но не успел обработать все строки (их там очень много)?
MySQL - [решено] Удаление html тега из базы




Должен убрать, не успел обработать. Попробуйте заменить запрос



PHP код:

Код: Выделить всё

$query = "SELECT * FROM `table` WHERE `link` LIKE '%\
Аватара пользователя
Vitaliy21

Re: MySQL - [решено] Удаление html тега из базы

Сообщение Vitaliy21 »

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

Вернуться в «Программирование и базы данных»