Даже не знаю как описать проблему. Есть строка которую я получаю из экселя (ну откуда это не важно) в общем как только доходит дело до регулярных выражений, а мне нужно в этой строке найти подстроку, которая ограничена скобками, например в строке "Замечательный (красивый) день" нужно найти слово "красивый" ну я использую регулярку preg_match('/\((.+)\)/', $str, $m); если жестко забить $str = "Замечательный (красивый) день"; preg_match('/\((.+)\)/', $str, $m); то все работает а вот когда я $str получаю программно то все перестает работать. Почему? Когда то давно давно давно сталкивался с такой проблемой там вроде надо было перед всем сделать что то типа $str = trim($str); но я попробовал не помогает ... а что тогда. Помогите. Добавлено спустя 38 минут: Попробовал сделать $str = iconv( "utf-8", "windows-1251", $str); не помогает
ну так разберитесь - что лежит в строке $str когда возникает сбой в работе. запишите в файл. узнайте что за кодировка там. или может там нет ничего в скобках. регулярка рабочая. разбирайтесь с текстом
Я пробовал делать print($str) мне выводится то что надо но когда начинаю работать регуляркой то перестает работать ... Что за колдовство ... Кто то раньше сталкивался с задачей анализа текста, который поступает с пост формы? Добавлено спустя 17 минут 11 секунд: Сделал file_put_contents("data.txt", $str); получил в файле что то типа такого "6-222 ГОСТ 520-2002 (ХАРП)" О чем это говорит? Как это преобразовать в пригодный для регулярки вид?
Код (PHP): $str='6-222 ГОСТ 520-2002 (ХА'; echo htmlspecialchars_decode($str); // 6-222 ГОСТ 520-2002 (ХА
Спасибо, но все равно не хочет регулярка работать: function GetTxt($str) { //print $str."<br>"; //$str = Unicode2Charset($str); $str = htmlspecialchars_decode($str); //file_put_contents("data.txt", $str); preg_match('/\((.+)\)/', $str, $m); print_r($m); } Выводится пустой массив Array ( ) Добавлено спустя 18 минут 47 секунд: Ерунда какая то ... Попробовал вот так сделать: Код (Text): function Unicode2Charset($str, $charset = 'Windows-1251') { // by SiMM, &#xHHHH; addition by John Profic return preg_replace( '~&#(?:x([\da-f]+)|(\d+))~ie', 'iconv("UTF-16LE", $charset, pack("v", "$1" ? hexdec("$1") : "$2"))', $str ); } $str='6-222 ГОСТ 520-2002 (ХАРП)6'; //print $str."<br>"; $str = Unicode2Charset($str); //$str = htmlspecialchars_decode($str); echo "<br><br>".$str; file_put_contents("data.txt", $str); preg_match('/\((.+)\)/u', $str, $m); print_r($m); В фаил заносится в нормальной кодировке, НО все равно регулярка не обрабатывает что я делаю не так? Добавлено спустя 9 минут 9 секунд: P.S. Разобрался В preg_match('/\((.+)\)/', $str, $m); я скобку ) переписал и все заработало магия? не знаю но не думал что такое может помочь, работал на авось
Хотя нет htmlspecialchars_decode не в этом случае. Тут придется делать свою функцию. Unicode2Charset($str,'utf-8') в твоем случае, если у тебя utf-8, а так, должно работать.