Есть 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_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