2011-05-15 3 views
1

Если у меня есть текстовое поле, где пользователь может ввести несколько писем, то естьPHP: TextBox Отдельные Письма

[email protected] 
[email protected] 
[email protected] 

Как я могу использовать PHP для разделения электронной почты в массив/объект?

Можно ли предоставить пользователям возможность разделять на ';' или ',' или новую строку?

ответ

1

Если вы укажете пользователю символ разделителя, вы можете использовать explode. Например, с помощью ;:

$emails = explode(';', $_GET['emails']); 

Вы можете использовать , или \n (новая линия) вместо ;, если вы предпочитаете.

Если вы хотите, чтобы разделить строку, основанную на все эти символы, используйте preg_split:

$emails = preg_split('/[;,\n]/', $_GET['emails']); 

Пример:

<?php 

$emails = '[email protected];[email protected] 
[email protected],[email protected]'; 

$emails = preg_split('/[,;\n]/', $emails); 

print_r($emails); 
/* 
Array 
(
    [0] => [email protected] 
    [1] => [email protected] 
    [2] => [email protected] 
    [3] => [email protected] 
) 
*/ 
+0

Спасибо, это работает! – Nikki

0

Вы можете использовать разделитель, например пробел или косую черту а затем на стороне PHP использует функцию explode php.net/explode, чтобы разделить ее.

1

Используйте explode(), который возвращает массив строк, каждый из которых является подстрокой строки, образованной путем разбиения ее на границы, образованные разделителем строк.

array explode (string $delimiter , string $string [, int $limit ]) 

Пример:

<?php 
$str = 'one|two|three|four'; 

// positive limit 
print_r(explode('|', $str, 2)); 

// negative limit (since PHP 5.1) 
print_r(explode('|', $str, -1)); 
?> 

Приведенный выше пример выведет:

Array 
(
    [0] => one 
    [1] => two|three|four 
) 
Array 
(
    [0] => one 
    [1] => two 
    [2] => three 
) 

Update:

Если вы хотите разделить на массив разделителей вы необходимо будет использовать preg_split() с соответствующим регулярным выражением.

+0

Что делать, если | не является единственным ограничителем? То есть новая строка, запятая, точка с запятой? – Nikki

+0

Тогда вам нужно будет использовать более сложное выражение, такое как preg_match_all. – BRampersad

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