Как преобразовать строку в несколько переменных? - PullRequest
0 голосов
/ 18 сентября 2018

Я хотел бы создать электронную форму, пользователь может ввести более одного адреса электронной почты в поле textarea.

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Name: <input type="text" name="name">
<br><br>    
 <textarea  name="email"></textarea>
<input type="submit" name="submit" value="Submit">      
</form>    

Когда пользователь вводит несколько текстовых сообщений на textarea. enter image description here

 <?php    

echo $_POST["name"].'<br>';
echo $_POST["email"].'<br>'; //make the three email convert to three variable.
?>

Любая идея сделать это ???

foreach ($_POST["email"] as $email) {
     // anyidea
    }
 $_POST["email"][0] = 'peter@gmail.com';
 $_POST["email"][1] = 'mary@gmail.com';
 $_POST["email"][2] = 'super@yahoo.com';

Большое спасибо.

Ответы [ 3 ]

0 голосов
/ 18 сентября 2018

Вы можете попытаться разделить список электронных писем CSV по шаблону \s*,\s*.Это будет обрабатывать любое количество пробелов перед или после запятых.

$input = "peter@gmail.com, mary@gmail.com , super@yahoo.com";
$emails = preg_split('/\s*,\s*/', $input);
print_r($emails);

Array ( [0] => peter@gmail.com [1] => mary@gmail.com [2] => super@yahoo.com )
0 голосов
/ 18 сентября 2018

Это то, что я бы сделал,

  $emails = array_filter(array_map('trim', explode(',', $_POST['email'])));

Разнесение разбивает строку на массив на основе первого аргумента array_map, работает как цикл и применяет к каждому элементу обрезку, которая обрезает белыйпробел (удаляет пустые места с обеих сторон).Фильтр массива удаляет любые ложные элементы массива.Такие как '' пустые строки.

Так что это заботится о таких вещах, как

 example@email.com, ,,someotheremail@email.com

Вывод

array(
   'example@email.com',
   'someotheremail@email.com'
)

, если вы хотите быть по-настоящему гибким, сделайте это

  $emails = array_filter(array_map('trim', preg_split('/(,|\||\s)/', $_POST['email'])))

Который выполняет те же действия, что и выше, но позволяет использовать пробелы или запятые в качестве разделителей.

0 голосов
/ 18 сентября 2018

Вы можете использовать функцию разнесения в PHP http://php.net/manual/en/function.explode.php

// Example 1
$pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...