|
|
|
| Здравcтсвуйте!
Такая проблема - вывожу по 200 знаков из бд, если я правильно понял то выводится "чистый" текст без html тегов, но считает оно с тегами, т.е на самом деле выводится грубо говоря 100 - 120 знаков, в другой записе, где нет тегов в начале, выводит все 200 знаков. нельзя ли средствами sql очистить текст, а уже потом
SUBSTRING(content,1,200) as con
|
заранее благодарю! | |
|
|
|
|
|
|
|
для: vadimka
(26.08.2009 в 10:52)
| | В тексте нет никаких тегов.
Теги есть только в гипертексте - в тексте обычные символы (часть из которых может являться, а может не являться символами разметки)
Гипертекст напрямую СУБД не хранят. | |
|
|
|
|
|
|
|
для: Trianon
(26.08.2009 в 11:12)
| | а регулярными средствами sql высчитать, что в тексте являться символами разметки и вырезать, а потом... | |
|
|
|
|
|
|
|
для: vadimka
(26.08.2009 в 11:18)
| | MySQL-регулярки позволяют лишь ответить на вопрос, отвечает строка шаблону или нет. | |
|
|
|
|
|
|
|
для: Trianon
(26.08.2009 в 11:20)
| | эх! спасибо за объяснение! | |
|
|
|
|
|
|
|
для: vadimka
(26.08.2009 в 11:18)
| | выбирайте 500 символов
и средствами РНР делайте зачистку и ограничивайте до 200 символов | |
|
|
|
|
|
|
|
для: Valick
(26.08.2009 в 11:38)
| | спасибо! | |
|
|
|
|
|
|
|
для: vadimka
(26.08.2009 в 11:42)
| | вот уж точно незашто) | |
|
|
|
|
|
|
|
для: vadimka
(26.08.2009 в 10:52)
| |
DELIMITER ;;
CREATE FUNCTION `strip_tags`( Dirty text) RETURNS text CHARSET utf8
DETERMINISTIC
BEGIN
DECLARE iStart, iEnd, iLength int;
WHILE Locate( '<', Dirty ) > 0 And Locate( '>', Dirty, Locate( '<', Dirty )) > 0 DO
BEGIN
SET iStart = Locate( '<', Dirty ), iEnd = Locate( '>', Dirty, Locate('<', Dirty ));
SET iLength = ( iEnd - iStart) + 1;
IF iLength > 0 THEN
BEGIN
SET Dirty = Insert( Dirty, iStart, iLength, '');
END;
END IF;
END;
END WHILE;
RETURN Dirty;
END;;
DELIMITER ;
|
Вырезает все что между "<" и ">"
mysql> SELECT strip_tags('<b>Hello</b>');
+----------------------------+
| strip_tags('<b>Hello</b>') |
+----------------------------+
| Hello |
+----------------------------+
|
Хотя я бы лучше не возлагал на БД ни эту процедуру ни substring. Насколько я понимаю если это короткое описание чего то, то лучше это короткое описание хранить отдельно. | |
|
|
|
|
|
|
|
для: Евгений Петров
(26.08.2009 в 22:51)
| | надо будет разбиратся... это первая страница новостей, когда выводятся заголовки, уменьшенное фото и и первые 200 знаков из статьи, кто знает, чего туда заказчик понакидывает ... (прикручен навороченный редактор при вводе статей). Т.е имело смысл 200 первых "очищенных" знаков кидать в отдельное поле? | |
|
|
|
|
|
|
|
для: vadimka
(27.08.2009 в 17:36)
| | Я бы дал заказчику возможность самому вводить короткое описание. Но если он настолько не уважает то чем он занимается, то можно фичу для него сделать - по умолчанию сохраняется 200 символов очищенного текста. | |
|
|
|
|
|
|
|
для: vadimka
(27.08.2009 в 17:36)
| | Кстати все эти WYSIWYG'и это такая жуть, вечные проблеммы с ними (и зачастую как раз потому что заказчик не умеет ими правильно пользовться). ИМХО научить человека 10 тегам намного проще чем потом разгребать последствия. А лучше в XML хранить документы и потом на основе них генерировать html со стилями. Вот например в каком виде хранится документация PHP (http://cvs.php.net/viewvc.cgi/phpdoc/howto/tools.xml?revision=1.30&view=markup) | |
|
|
|
|
|
|
|
для: Евгений Петров
(28.08.2009 в 22:58)
| | Спасибо! век живи - век учись (to live to learn):) | |
|
|
|