2012-05-20 4 views
0

У меня есть функция, которая использует запятую как разделитель при разбиении пар имени/электронной почты из длинной строки. Я хотел бы изменить эту функцию, чтобы иметь возможность обнаруживать, если вместо запятой используется разрыв строки. Вот функция, которая должна быть изменена:Добавление разрыва строки в качестве разделителя

$str = '"Fname Lname" <[email protected]>, [email protected]'; 
$pairs = explode(",", $str); 
foreach($pairs as $pair) { 
    if(strpos($pair, '<')) { 
    $output = explode("<", $pair); 
    $output['0'] = trim(str_replace("\"", "", $output['0'])); 
    $output['1'] = trim(rtrim($output['1'], ">")); 
    } else { 
    $output = array(); 
    $output['0'] = ''; 
    $output['1'] = $pair; 
    } 
    print_r($output); // Save it to database here 
} 

Я нашел пост с предложением, используя файл() fnction, но я не уверен, как совместить эти два вместе.

$str = '"Fname Lname" <[email protected]>, [email protected]'; 
$pairs = file($str, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); 

ответ

1

Попробуйте это, преобразовать в строку перерывы затем проверить, существует ли

$str=nl2br($str); 
if (strpos($str,'<br />')!==false){ 
$pairs = array_filter(explode("<br />", $str)); 
} 

или в качестве альтернативы, вы можете распадаться на пространствах, которые должны поймать разрывы строк

if (strpos($str,' ')!==false){ 
$pairs = array_filter(explode(" ", $str)); 
} 

Примечание; Я добавил array_filter, потому что он удалит для вас пустые значения. Кроме того, я бы предложил использовать FILTER_VALIDATE_EMAIL отсюда http://php.net/manual/en/filter.filters.validate.php перед добавлением в вашу базу данных.

+0

Да, я планирую сначала отобразить все значения для пользователя, а затем отправить, все еще проверять электронную почту. Благодарю. – santa

1

Настоящая строка в php написана как "\n". Просто используйте

$pairs = explode("\n", $str); 

Обратите внимание, что \ изменяет поведение для n, что делает его разрыв строки. "\n" дает хорошую строку, а "\\n" дает \n как выход.

Смежные вопросы