我在这个网站上尝试了几件事,比如在我的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']);
答案 0 :(得分:1)
尝试更换
<input type="text" id="myField" name="tags">
带
<textarea id="myField" name="tags"></textarea>
。 textarea
元素支持多行用户输入,而常规input
字段则不支持。
此类简单任务也不需要正则表达式拆分,初始化regex
引擎是CPU 饥饿练习。
还有一件事 - 永远不会在INSERT
,read 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循环,它不能正常工作......