Эта тема на forum.dklab.ru


rdsden: регулярные выражение и апостроф
В общем имеется строка типа:
3414406,0905,1049,"НОВОСИБИРСКАЯ ОБЛ., М",00001,000000000001.50, 91374,2, 0,89137417868

Требуется разобрать её на состовляющие и отдельные части записать в таблицу.. с этим всё понятно и вопросов нет.
Часть строки между кавычек:
"НОВОСИБИРСКАЯ ОБЛ., М"
находится по рег. выражению: "\s*(.*)\s*"

Но проблема в том, что в этой строке иногда может встретиться апостроф ('):
"УСЛУГА 'БЕСПЛАТНЫЙ ВЫ"
и вот такую строку моя программа не хочет брать.. что я только не придумывал...

Помогите советом.
Maus:
rdsden
вероятно, Ваша программа сама использует одинарные кавычки - например, в сформированном SQL-запросе. Если Вы не знаете, как искать ошибки: http://phpfaq.ru/debug

Кстати, рег "([^"]*)" и последующий trim(), имхо, будут быстрее
dimagolov:
rdsden, Вам explode, а не регулярки нужны
Azrr:
addslashes() перед занесением в базу решает проблему с апострофом, ковычками прочим...
bæv:
Azrr, Вы вот это:
http://phpfaq.ru/slashes
— ещё не читали?
Azrr:
bæv, нет, не читал, спасибо за ссылочку, но я не понимаю, как это отностися к данному случаю?
В данном конкретном случае addslashes решает проблему ковычки, никаких других ухишьрений не требуется.
bæv:
я не понимаю, как это отностися к данному случаю?
— по-моему, лучше сразу сделать правильно.
В той статье не зря написано, что addslashes устарела.
Iced:
В общем имеется строка типа:
3414406,0905,1049,"НОВОСИБИРСКАЯ ОБЛ., М",00001,000000000001.50, 91374,2, 0,89137417868
Хотелось бы уточнить как она "имеется"? :) Если "имеется" (читай: считывается) откуда-то из файла, то всторону преги, fgetcsv() - это решение проблемы.
Хотя, проблема с кавычкой скорее всего вылазит на этапе работы с БД, а не в прегах... Аффтар, локализируй проблему! :)
rdsden, Вам explode, а не регулярки нужны
Я так понял, что все благородно промолчали на решение проблем за счёт возникновения новых... ;)

Эта тема на forum.dklab.ru