在PHP中,我试图创建一个换行符:
echo $clientid;
echo ' ';
echo $lastname;
echo ' ';
echo '\r\n';
Run Code Online (Sandbox Code Playgroud)
然后我在记事本中打开创建的文件,它按字面意思写下换行符:
1 John Doe\r \n 1 John Doe\r \n 1 John Doe\r \n
我尝试了很多变化\r\n,但没有工作.为什么新线不能换成新线?
注意:如果这是一个非常简单的问题,我很抱歉,但我对代码的格式有点强迫.
我有一个类,其函数返回一个字符串,该字符串将构成电子邮件的正文.我希望这个文本格式化,以便它在电子邮件中看起来正确,但也因此它不会使我的代码看起来很时髦.这就是我的意思:
class Something
{
public function getEmailText($vars)
{
$text = 'Hello ' . $vars->name . ",
The second line starts two lines below.
I also don't want any spaces before the new line, so it's butted up against the left side of the screen.";
return $text;
}
}
Run Code Online (Sandbox Code Playgroud)
但它也可以写成:
public function getEmailText($vars)
{
$text = "Hello {$vars->name},\n\rThe second line starts two lines below.\n\rI also don't want any spaces before the new line, so it's butted up against the left …Run Code Online (Sandbox Code Playgroud) 在PHP 5.3中有一个很好的功能,似乎做我想要的:
strstr(input,"\n",true)
Run Code Online (Sandbox Code Playgroud)
不幸的是,服务器运行PHP 5.2.17并且可选的第三个参数strstr不可用.有没有办法在以前的版本中实现这一点?
我有一个php解析器,它通过换行符拆分给定的字符串,执行如下操作:
$lines = explode(PHP_EOL,$content);
Run Code Online (Sandbox Code Playgroud)
在服务器端工作时,解析器工作正常.但是,当我通过ajax(使用jquery的$ .post方法)通过post传递内容时,问题就出现了:不会识别换行符.经过近一个小时的测试和头痛后,我决定将PHP_EOL改为"\n"并且它有效:
$ lines = explode("\n",$ content);
现在它有效!该死的我失去了这么多时间!当有人正确地使用PHP_EOL和"\n"时,有人可以解释一下,这样我以后可以节省时间吗?感谢你的答案;)
我试着编写一个回显字符串的php脚本,它不识别那里的行尾函数.
例如
echo "thank you \n "
echo "for coming over"
Run Code Online (Sandbox Code Playgroud)
该echo 被忽略,它打印整个行\n.
得到以下相同的结果:
echo "thank you " . PHP_EOL.;
echo "for coming over" . PHP_EOL.;
Run Code Online (Sandbox Code Playgroud) 简单问题......
我看到有人告诉我在各个地方使用"\ r \n",其他人告诉我在同一个地方使用"\n".我确信一个是正确的,一个是错的.示例 - 设计mail()标头时:
教程#1:
//define the headers we want passed. Note that they are separated with \r\n
$headers = "From: webmaster@example.com\r\nReply-To: webmaster@example.com";
//add boundary string and mime type specification
$headers .= "\r\nContent-Type: multipart/mixed; boundary=\"PHP-mixed-".$random_hash."\"";
Run Code Online (Sandbox Code Playgroud)
教程#2(注意头参数):
mail($to, $subject, $body,
"From: " . $from . "\n" .
"bcc: " . $bcc . "\n" .
"MIME-Version: 1.0\n" .
"Content-Type: multipart/alternative;\n" .
" boundary=" . $mime_boundary_header)
Run Code Online (Sandbox Code Playgroud)
我很困惑,但显然它有点不同,因为有一个,我的标题工作,而另一个,他们有时只工作.
我正在尝试在PHP中输出换行符,以便在Web浏览器中查看.我只能通过使用<br />标签来管理它.
当我使用\n时,什么都没有发生,那么使用的好处是\n什么?还有什么好处PHP_EOL?当我将它连接到一个字符串时,只打印一个空格而不是换行符.
如何在PHP中检测文本区域中的回车符/换行符?
<br />在将其存储在数据库中之前,我想用标签替换它们.
如果我有一个foreach构造,像这样:
foreach ($items as $item) {
echo $item . "<br />";
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以通过使用计数器变量跟踪构造循环的次数,如下所示:
$counter = 0;
$foreach ($items as $item) {
echo $item.' is item #'.$counter. "<br />";
$counter++;
}
Run Code Online (Sandbox Code Playgroud)
但是可以在不使用"计数器"变量的情况下完成上述操作吗?也就是说,是否可以知道循环内的迭代计数foreach,而不需要"计数器"变量?
注意:我完全可以在我的循环中使用计数器,但我只是想知道是否有一个直接构建到PHP中的规定...这就像是一个很棒的foreach构造,它简化了某些操作,这些操作在执行时很笨拙使用for构造的同样的事情.
我有以下代码,我用来读取带有CRLF作为行结尾的csv文件
if (($fp = fopen($path, "r")) !== FALSE) {
while (($record = fgetcsv($fp, 1000, "\r\n")) !== FALSE) {
if ($row == 0) {
$record[0] = $batchHeader;
}
$newCsvData[] = $record;
$row++;
}
}
Run Code Online (Sandbox Code Playgroud)
当我上传csv文件时,我收到以下错误:fgetcsv():分隔符必须是单个字符
这是一个示例或我的csv:
谢谢.