当我使用`\ n`或"时,explode()无效"

时间:2014-05-12 13:30:46

标签: php

我在这个网站上尝试了几件事,比如在我的explode()函数中使用PHP_EOL,\ n和“”作为分隔符,这将用于向多个用户发送消息

HTML code:

     <input type="text" id="myField"   name="tags">
     <input type="submit" name="nm" id="nm" value="Submit" />

包含explode()函数的PHP脚本:

    $lines = explode("\n",$_POST["tags"]);
      $sql = "INSERT INTO mail(reciever,messages) VALUES(:to, :message)";

for($i = 0; $i < count($lines) -1; $i++)
{
$con->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );


$stmt = $con->prepare( $sql );
$stmt->bindValue( "to", $lines[$i], PDO::PARAM_STR );
$stmt->bindValue( "message", $enc, PDO::PARAM_STR );

$stmt->execute();

}

我在这里做错了吗?为什么\n" "PHP_EOL无效? 我也试过preg_split这是我的代码:

$lines = preg_split('/\n+/',$_POST['tags']);

3 个答案:

答案 0 :(得分:1)

尝试更换

<input type="text" id="myField" name="tags">

<textarea id="myField" name="tags"></textarea>textarea元素支持多行用户输入,而常规input字段则不支持。

此类简单任务也不需要正则表达式拆分,初始化regex引擎是CPU 饥饿练习。

还有一件事 - 永远不会在INSERTread why中使用LOOP SQL语句。

答案 1 :(得分:1)

您可能希望使用“空格”字符分割标记:

$tags = explode(" ", $_POST["tags"]);

如果您需要按行拆分文本,则需要以下HTML代码:

<textarea rows="4" cols="50"></textarea>

您还需要以下PHP代码:

$tags = explode("\r\n", $_POST["tags"]);

这将确保它支持所有浏览器和平台。

答案 2 :(得分:1)

没关系的家伙我设法让它工作的原因是它不起作用是因为 我的for($i = 0; $i < count($lines)-1; $i++)

我刚删除-1并且它有效...所以input type="text"实际上并不是这里的问题所以为了参考,使用text或textarea这个问题无关紧要您正在使用正确的组合来分隔您的字符串输入

这是php脚本

    $lines = explode("/\r\n|\n|\r/",$_POST["tags"]);
      $sql = "INSERT INTO mail(reciever,messages) VALUES(:to, :message)";

for($i = 0; $i < count($lines) -1; $i++)
{
$con->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );


$stmt = $con->prepare( $sql );
$stmt->bindValue( "to", $lines[$i], PDO::PARAM_STR );
$stmt->bindValue( "message", $enc, PDO::PARAM_STR );

$stmt->execute();

}

和我的html页面

 <input type="text" id="myField" name="tags">
 <input type="submit" name="nm" id="nm" value="Submit" />

所以我的explode()函数实际上正在使用它的for循环,它不能正常工作......