Есть такая строка: $str="Vasilij petrov <vasilij@mail.ru>" и мне из неё надо достать только имя с фамилией, я использую такое рег. выражение Код (Text): preg_match("/[a-zA-Z0-9\s\-\.\"]{1,}/", $str, $name); Работает как надо но если отправитель в своём имени будет использовать к примеру такой вариант: Vāsilij pētrov то символы ā и ē он не пропускает и с них начинает новый цикл т.е. V silij p trov Что в этом случае можно сделать?
Проверил, результат такой-же. Может есть команда чтобы все utf-8 сивмолы пропускал за исключением некоторых?
Simpliest RFC я посмотрел, я так понимаю это касается непосредственно самого email адреса, тут-же речь о имени и поддержка в этом случае распространяется на все языковые символы Volt(220) с "u" та-же беда
Что-то в этом духе: PHP: <?php $receiver = "Vasilij petrov <vasilij@mail.ru>"; try { if(($email = strpos($receiver, 0x3C)) !== false) { // Ищем парную скобку if(($length = strpos($receiver, 0x3E))) { $name = trim(substr($receiver, 0, $email)); $email = trim(substr($receiver, $email, (++$length -$email)), "<>"); } else throw new Exception("Кривой формат"); } else { $email = trim($receiver, "<>"); $name = ""; } } catch (Exception $e) { exit ($e->GetMessage()); } ?>
Volt(220) Странно, если без спец символов то работает нормально а если добавить ā или č то не пропускает. Apple Хотелось бы решить проблему регуляркой.
Вы хоть напишите реально ли решить эту задачу регулярным выражением? Я так понимаю что единственный выход это добавить все эти символы в регулярку, или я ошибаюсь?
рабочее решение приведено во втором посте. ваши проблемы с кодировками а не рег. выражением. в рег добавить модификатор u. файл сохранить в utf-8