【问题标题】:$_POST a input value in two parts (explode?)$_POST 输入值分为两部分(爆炸?)
【发布时间】:2011-10-15 07:19:50
【问题描述】:

我真的是 PHP 新手,所以这可能是一个非常愚蠢的问题。

我正在使用 PHP 提交电子邮件表单,并且希望电子邮件包含表单输入的某些值。这是一个精简版:

<?php
if(isset($_POST['submit'])) {
  $to = 'address@gmail.com' ;
  $subject = 'Subject';
  $headers  = 'MIME-Version: 1.0' . "\r\n";
  $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
  $message =

  //here are the values that the email will send me 
  "<p>".$_POST('some-name')."</p>
   <p>".$_POST('some-name')."</p>" ;

  mail($to, $subject, $message, $headers);
  header('Location: ../estimate.html');
} ?>

输入some-name 的值是,例如,从表单发布的10-widgets

问题来了:我如何在第一个&lt;p&gt; 中列出第一部分(所以它是“10”)和第二个,而不是两次列出“10-widgets”(如上面的代码那样)参与第二个&lt;p&gt;(所以它会是“小部件”)?

以下内容似乎很有希望:

$wholeVal = $_POST('some-name');
$partVal = explode("-",$wholeVal);

然后,在某个地方,$_POST($partVal[0]);$_POST($partVal[1]);

但我不知道这应该发生在哪里,而且我把它放在任何地方似乎都会让整个事情崩溃。

感谢您的帮助。

【问题讨论】:

    标签: php email post explode


    【解决方案1】:

    首先,您应该使用方括号访问 $_POST,例如 $_POST['some-name']explode 返回一个数组。所以在你的例子中,explode('-', '10-widgets')[0] 将返回 '10'explode('-', '10-widgets')[1] 将返回 'widgets'

    所以你的代码会是这样的:

    <?php
      if(isset($_POST['submit'])) {
        $to = 'address@gmail.com' ;
        $subject = 'Subject';
        $headers  = 'MIME-Version: 1.0' . "\r\n";
        $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
    
        $parts = explode('-', $_POST['some-name']);
    
        //here are the values that the email will send me 
        $message = 
          "<p>".$parts[0]."</p>
          <p>".$parts[1]."</p>";
    
        mail($to, $subject, $message, $headers);
        header('Location: ../estimate.html');
      } 
    ?>
    

    【讨论】:

    • 完美,正是我所需要的。慢慢地,但我肯定在学习 PHP。
    • +1 表示不使用split,我建议在header 之后使用exit
    • @BookOfZeus 为什么要使用 exit?在此示例中,代码实际上到此结束。
    • @niomaster 只是因为如果有一天你在之后添加代码,什么都不会破坏。我同意你的观点,你不需要它,因为在 header 之后没有代码,但如果有一天你决定将此代码包含在其他代码中(包含在文件中),那么什么都不会破坏。
    【解决方案2】:

    我知道您目前正在寻找功能,但请记住,如果您用“-”分割字符串,那么对于脚本小子(甚至是好心的人)来说真的很容易问题)使用连字符的单词,您的脚本将中断。

    请注意:D

    【讨论】:

      【解决方案3】:

      试试看

      $wholeVal = $_POST('some-name');
      $list($ammount, $type) = explode("-",$wholeVal);
      

      然后进入您的电子邮件:

      $message = "<p>" . $ammount . "</p><p>" . $type . "</p>" ;
      

      【讨论】:

        【解决方案4】:
        <?php
        if(isset($_POST['submit'])) {
          $to = 'address@gmail.com' ;
          $subject = 'Subject';
          $headers  = 'MIME-Version: 1.0' . "\r\n";
          $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
          $message =
        
            $wholeVal = $_POST('some-name');
            $partVal = explode("-",$wholeVal);
          //here are the values that the email will send me 
          "<p>".$partVal[0]."</p>
           <p>".$partVal[1]."</p>" ;
        
          mail($to, $subject, $message, $headers);
          header('Location: ../estimate.html');
        } ?>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-10-05
          • 1970-01-01
          • 2015-07-27
          • 1970-01-01
          • 2019-12-16
          • 2011-02-21
          相关资源
          最近更新 更多