string path = @"c:\folders\newfolder"; // or whatever if (!System.IO.Directory.Exists(path)) { DirectoryInfo di = Directory.CreateDirectory(path); di.Attributes = FileAttributes.Directory | FileAttributes.Hidden; }
От здесь .
Регулярное выражение, которое будет соответствовать и захватывать любой символ, пока он не достигнет символа @
:
([^@]+)
Это похоже на то, что вам нужно. Он будет обрабатывать всевозможные причудливые варианты адресов электронной почты.
Я не уверен, почему Бен Джеймс удалил свой ответ, поскольку я считаю, что он лучше моего. Я собираюсь опубликовать его здесь (если он не восстановит свой ответ):
Зачем использовать регулярное выражение вместо строковых функций?
$ parts = explode ("@", " johndoe@domain.com "); $ username = $ parts [0];
В этой ситуации вам вообще не нужны регулярные выражения. Лично я думаю, что использование explode
намного лучше.
Как Johannes Rössel указывает в комментариях, синтаксический анализ адресов электронной почты довольно сложен. Если вы хотите быть на 100% уверены, что сможете обрабатывать любой технически допустимый адрес электронной почты, вам придется написать процедуру, которая будет правильно обрабатывать цитирование, потому что оба решения, перечисленные в моем ответе, будут подавляться адреса типа " a @ b " @ example.com
. Может быть, есть библиотека, которая обрабатывает этот вид синтаксического анализа за вас, но я не знаю об этом.
@OP, если вы хотите получить все до @, просто используйте методы строки / массива. Нет необходимости в сложном регулярном выражении. Разнесите на «@», затем удалите последний элемент, который является частью домена
$str = '"peter@john@doe"@domain.com (John Doe)';
$s = explode("@",$str);
array_pop($s); #remove last element.
$s = implode("@",$s);
print $s;
, вывод
$ php test.php
"peter@john@doe"
Я бы выбрал $ author = str_replace (strrchr ($ authorpre, '@'), '', $ authorpre);
Вы можете начать с использования mailparse_rfc822_parse_addresses
для синтаксического анализа адреса и извлечения только спецификации адреса без какого-либо отображаемого имени. Затем вы можете извлечь часть перед @
с помощью регулярного выражения (. *) @
.