【问题标题】:How to convert string to multiple variable?如何将字符串转换为多个变量?
【发布时间】:2018-09-18 02:31:22
【问题描述】:

我想创建一个电子表格,用户可以在 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 上键入多个电子邮件时。如下图所示

 <?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';

非常感谢。

【问题讨论】:

标签: php forms textarea


【解决方案1】:

这就是我会做的,

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

Explode 根据第一个参数 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'])))

与上述相同,但允许您使用空格逗号或管道作为分隔符。

【讨论】:

    【解决方案2】:

    您可以尝试在\s*,\s* 模式上拆分您的 CSV 电子邮件列表。这将处理逗号分隔符之前或之后的任何数量的空格。

    $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 )
    

    【讨论】:

      【解决方案3】:

      你可以在PHP中使用explode函数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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-12-17
        • 2021-12-02
        • 1970-01-01
        • 2018-07-04
        • 1970-01-01
        • 2010-09-30
        相关资源
        最近更新 更多