надо удалить <?xml version="1.0" encoding="windows-1251" ?> и все передается в переменную строчную
не допираю как найти <?xml могу через preg_match - удалить содержимое нет
movEAX
Отправлено: 02 Декабря, 2009 - 13:54:52
Частый посетитель
Покинул форум
Сообщений всего: 750
Дата рег-ции: Авг. 2009
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
/\<\?xml[^>]+\?\>/i
movEAX
Отправлено: 02 Декабря, 2009 - 13:58:07
Частый посетитель
Покинул форум
Сообщений всего: 750
Дата рег-ции: Авг. 2009
Помог: 16 раз(а)
Champion пишет:
/\<\?xml[^>]+\?\>/i
А зачем экранировать < и > ?
----- армия.. самое убогое место
Phantik
Отправлено: 02 Декабря, 2009 - 13:59:06
Посетитель
Покинул форум
Сообщений всего: 305
Дата рег-ции: Июнь 2009
Помог: 0 раз(а)
Видимо регулярка для поиска будет выглядеть как - то так:
/^<\?xml\sversion="1\.0"\sencoding="windows-1251"\s\?>$/
Champion
Отправлено: 02 Декабря, 2009 - 14:09:29
Активный участник
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
movEAX это не повредит. Они иногда выполняют специальные функции. Эдесь можно и не экранировать.
Phantik если бы нужно было найти точно такую строку, то можно и без регулярок str_replace обойтись.
Djin_dj
Отправлено: 02 Декабря, 2009 - 14:26:28
Частый гость
Покинул форум
Сообщений всего: 180
Дата рег-ции: Июнь 2008 Откуда: Россия
Помог: 0 раз(а)
Подошла регулярка movEAX, другие не юзал, str_replace не прокатывает потому что при переводе из POST массива символы " и ' экранируются а может и нет, и я не знаю какие ковычки придут, но всем спасибо!
movEAX
Отправлено: 02 Декабря, 2009 - 14:37:29
Частый посетитель
Покинул форум
Сообщений всего: 750
Дата рег-ции: Авг. 2009
Помог: 16 раз(а)
Champion пишет:
movEAX это не повредит. Они иногда выполняют специальные функции. Эдесь можно и не экранировать.
Я знаю только несколько случаев когда они используются:
- (?<= - утверждение
- (?<! - утверждение
- (?> - однократная подмаска
Где еще? ))
----- армия.. самое убогое место
Champion
Отправлено: 02 Декабря, 2009 - 14:46:10
Активный участник
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
да, нигде в общем-то) Просто привычка - символы, которые могут что-то особое значить - экранировать
trot
Отправлено: 02 Декабря, 2009 - 21:04:59
Новичок
Покинул форум
Сообщений всего: 34
Дата рег-ции: Нояб. 2009
Помог: 0 раз(а)
Из двух предложенных вариантов самый эффективный, это у товарища Champion.
Если позволите немножно доработать.
/^<\?xml [^\\>]+\?\>$/m
Конструкции \< и \> в некоторых диалектах обозначают границы слов
returnpreg_replace('/&&+/','&',str_replace(array("\x20","\r\n",'<','>','/','?'),'&',str_replace(array('"','\\'),'',$data)));//удаляем ", заменяем все "левые" символы на эмперсанд а серию &&+ на один &
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.