SQL Querry, да не извежда резултати от html тагове

jacob

Registered
Здравейте,
имам форма, която търси в клетка, която се въвежда от TinyMCE Editor -сътветно когато болдна едитора оставя <strong> например. Когато през търсачката пусна за търсене извечда всички въведени стойноси с този таг. Някой има ли идея как да забраня на query-то да извежда резултати започващи и завършващи с "<" и ">" или някакво по-добро решение ?
 
Опитай:

[sql]SELECT * FROM TableName
WHERE Colunm_Name NOT REGEXP '^\<.*\>$' AND
Colunm_Name LIKE '%Търсената_дума%';
[/sql] :)
 
Пробвах, но не ми се получи....

ето querry заявката ми:

PHP:
$data = mysql_query("SELECT * FROM table_name WHERE published='1' AND BINARY column_1 LIKE '%$find%' OR column_2 LIKE '%$find%' ORDER BY column_1 ASC");

като column_2 е колоната в която записва tinymce
 
Трябва да смениш table_name с името на реалната ти таблица:

PHP:
$data = mysql_query("SELECT * FROM table_name
WHERE published=1 AND
column_2 NOT REGEXP '^\<.*\>$' AND
(BINARY column_1 LIKE '%{$find}%'
OR column_2 LIKE '%{$find}%')
ORDER BY column_1 ASC") or die(mysql_error());
Съмнява ме обаче,че информацията си я обработил с htmlspecialchars/htmlentites, преди да я добавиш в ДБ. Тогава
<strong>бла</strong> ще е реално в DB като
<strong>бла</strong>
и трябва да промениш заявката примерно на:
PHP:
$data = mysql_query("SELECT * FROM table_name
WHERE published=1 AND
column_2 NOT LIKE '<%>' AND
(BINARY column_1 LIKE '%{$find}%'
OR column_2 LIKE '%{$find}%')
ORDER BY column_1 ASC") or die(mysql_error());
Може да опиташ да напишеш по-комплексен регулярен израз според нуждите ти-затова първоначално ти дадох примера c regexp, a не с like.
 
TryMe каза:
И най-лесният вариант е като вадиш резултатите да слагаш strip_tags().
Доколкото се разбира от въпроса, не трябва да присъства в резултата изобщо ред, който започва и завършва c таг
Някой има ли идея как да забраня на query-то да извежда резултати започващи и завършващи с "<" и ">" или някакво по-добро решение ?
 

Горе