php foreach 计算新行 (\n)
php foreach counting new lines (\n)
如果我有一段代码是这样工作的:
$i = 0;
$names = explode(",", $userInput);
foreach($names as $name) {
$i++;
}
如果用户在每个名称输入到 html 来自的文本区域后放置一个逗号,它就可以完美运行。但我想让它对用户更友好并对其进行更改,以便每个名称都可以在新行中输入,并且它会计算用户输入的行数以确定输入到该字段中的名称数量。所以我尝试了:
$i = 0;
$names = explode("\n", $userInput);
foreach($names as $name) {
$i++;
}
但这结果只是给我“1”,而不管文本区域中的新行数。如何使我的爆炸计数新行而不是基于特定输入到文本字符串中的内容计数?
编辑感谢回答的人,我不认为有任何错误的答案,只是一个比其他的更适合我的原始代码,并且可以正常工作.我最终采用了它并对其进行了修改,以便许多空白行 returns 不会导致人为地增加 $userInput 计数。这是我现在使用的:
if(($userInput) != NULL) {
$i = 0;
$names = explode(PHP_EOL, trim($userInput));
foreach($names as $name) {
$i++;
}
}
它从 $userInput 中删除空 space 以便函数的其余部分仅在有效行内容上执行。 :)
不要搞复杂,不用炸成数组,直接用这个:
(只计算换行符(PHP_EOL
) in your string with substr_count()
)
echo substr_count($userInput, PHP_EOL);
尝试使用 PHP 行尾常量 PHP_EOL
$names = explode(PHP_EOL, $userInput);
一个空白字符串作为输入:
var_dump(explode("\n", ''));
这是调用 explode() 的结果:
array(1) { [0]=> string(0) "" }
所以你可以使用三元语句:
$names = $userInput == '' ? array() : explode("\n", $userInput);
也许您可以使用 preg_split 更改分解函数,以使用正则表达式分解用户字符串
$users = preg_split('/[\n\r]+/', $original);
我的想法是这样,但我不在电脑上所以无法测试我的代码。
如果发现一个或多个换行符,该正则表达式将拆分字符串。
如果我有一段代码是这样工作的:
$i = 0;
$names = explode(",", $userInput);
foreach($names as $name) {
$i++;
}
如果用户在每个名称输入到 html 来自的文本区域后放置一个逗号,它就可以完美运行。但我想让它对用户更友好并对其进行更改,以便每个名称都可以在新行中输入,并且它会计算用户输入的行数以确定输入到该字段中的名称数量。所以我尝试了:
$i = 0;
$names = explode("\n", $userInput);
foreach($names as $name) {
$i++;
}
但这结果只是给我“1”,而不管文本区域中的新行数。如何使我的爆炸计数新行而不是基于特定输入到文本字符串中的内容计数?
编辑感谢回答的人,我不认为有任何错误的答案,只是一个比其他的更适合我的原始代码,并且可以正常工作.我最终采用了它并对其进行了修改,以便许多空白行 returns 不会导致人为地增加 $userInput 计数。这是我现在使用的:
if(($userInput) != NULL) {
$i = 0;
$names = explode(PHP_EOL, trim($userInput));
foreach($names as $name) {
$i++;
}
}
它从 $userInput 中删除空 space 以便函数的其余部分仅在有效行内容上执行。 :)
不要搞复杂,不用炸成数组,直接用这个:
(只计算换行符(PHP_EOL
) in your string with substr_count()
)
echo substr_count($userInput, PHP_EOL);
尝试使用 PHP 行尾常量 PHP_EOL
$names = explode(PHP_EOL, $userInput);
一个空白字符串作为输入:
var_dump(explode("\n", ''));
这是调用 explode() 的结果:
array(1) { [0]=> string(0) "" }
所以你可以使用三元语句:
$names = $userInput == '' ? array() : explode("\n", $userInput);
也许您可以使用 preg_split 更改分解函数,以使用正则表达式分解用户字符串
$users = preg_split('/[\n\r]+/', $original);
我的想法是这样,但我不在电脑上所以无法测试我的代码。 如果发现一个或多个换行符,该正则表达式将拆分字符串。