[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Заменить все кроме A-Z,_ в тексте в строке
olgatcpip
Здравсвуйте.

Есть RTF текст. В нем есть спец слова-теги, которые "расползлись"
Нужно удалить все символы кроме A-Z,_ во всех фрагментах от "<" до ">" документа/файла.
слова-теги могут быть типа <TEXT_TT_QQ>, т.е. начинаются с <, заканчиваются > , а внутри только заглавные буквы и _.

Более подробно. Жил был пользователь. Открыл он ворд, написал туда текст типа "Бла-бла <TEXT_TT_QQ> бла бла". Сохранил он текст в формате RTF.
А потом решил посмотреть что там внутри. Открыл он этот файл notepad++ом и увидел , что <TEXT_TT_QQ> первратился в
"<}{\rtlch\fcs1 \af0\afs24 ... TEXT_TT ... }.... {... \fcs1 \af0\afs24... _ \fcs1 \af0\afs24.... QQ ... > "
Вот типа такого. Но очень важно, для дальнейшей обработки файла, чтобы внутри этого документа, так сказать в исходниках, тег не расходился.

Поэтому решено, пропустить через обработку этот файл.
Итого из того, то я привела нужно получить/заменить этот фрагмент обратно на <TEXT_TT_QQ>

Помогите, пожалуйста.



Спустя 12 минут, 38 секунд (13.05.2011 - 11:44) DedMorozzz написал(а):
Цитата
Нужно удалить все символы кроме A-Z,_ во всех фрагментах от "<" до ">"

$text = preg_replace('#(<)[^A-Z,_]+(>)#s',$1$2, $text);

Попробуй так, хотя лучше всего сперва выбрать участок в котором надо убирать символы и с ним работать. Отпишись если написанный вариант не сработает(нету времени проверять)

Спустя 8 минут, 52 секунды (13.05.2011 - 11:53) olgatcpip написал(а):
Цитата
$text = preg_replace('#(<)[^A-Z,_]+(>)#s',$1$2, $text);

ругается
Цитата
Parse error: syntax error, unexpected T_LNUMBER, expecting T_VARIABLE or '$'

я изменила на
так
$text = preg_replace('#(<)[^A-Z,_]+(>)#s',$1$2, $text);

и вот так
$text = preg_replace('|(<)[^A-Z,_]+(>)|s','\\1\\2', $STR);


не помогло


Спустя 3 минуты, 34 секунды (13.05.2011 - 11:56) DedMorozzz написал(а):
ну да, естесно в кавычки надобно.
тогда делай как и сказал выше, ищи нужный участок и его разбирай. Т.е.
Preg_replace_callback. Находишь все от < до > в найденный участок просто пропукаешь через:
preg_replace('#[^A-Z,_]+#s','', $text);

и так получишь необходимый результат.

Если у самой не выйдет - помогу написать

Спустя 10 минут, 51 секунда (13.05.2011 - 12:07) olgatcpip написал(а):
DedMorozzz
сделала вот так
function test($matches)
{
return "<".preg_replace('#[^A-Z,_]+#s','', $matches[1]).">";
}

$text = preg_replace_callback(
"|<([^>]+)>|",
"test",
$STR);
echo htmlspecialchars($text);

на моем примере нормально отработало! ура!

спасибо


_____________
Ласковое слово и кошке приятно... Плюсик в карму сойдет wink.gif
*smarty дока - новая любовь
Моё рукотворение ругайте, хвалите smile.gif
Веду маленький блог
в этом блоге публикую новые работы
WMR217126627282 wink.gif

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.