php explode foreach 奇怪的换行符
php explode foreach strange line breaks
我有一个文本区域,其中填充了 000000
和 ffffff
等颜色代码,每种颜色都在单独的一行上,因此它看起来像:
000000
111111
222222
现在我将这些转换为实际的内联背景颜色:
$bgclass = $params->get('bgclass');
$bgcolors = $params->get('bgcolors');
$bglines = explode("\n", $bgcolors);
if ( !empty($bglines) ) {
echo "<style>";
foreach ( $bglines as $bgline ) {
echo "." . $bgclass . "-" . $bgline . "{background:#" . $bgline . ";}" . "\r\n";
}
echo "</style>";
}
现在输出如下:
<style>
.bg-000000
{background:#000000
;}
.bg-111111
{background:#111111
;}
.bg-222222
{background:#222222
;}
</style>
如何让输出变成这样:
<style>
.bg-000000{background:#000000;}
.bg-111111{background:#111111;}
.bg-222222{background:#222222;}
</style>
explode()
\r\n
而不是:
$bglines = explode("\r\n", $bgcolors);
另一种选择是 trim()
它:
$bglines = explode("\n", $bgcolors);
$bglines = array_map('trim', $bglines);
如果这是一个文件(正如我最初所想的那样),那么我会使用 file()
将文件读入数组并去除行尾:
$bglines = file('/path/to/file.txt', FILE_IGNORE_NEW_LINES);
我不确定您发布的方法有什么问题,但这可能会对您有所帮助。
<?php
$bglines = explode(PHP_EOL, $bgcolors);
$styles = [];
foreach($bglines as $bgline) {
$trimmed = trim($bgline);
$styles[] = sprintf(".%s-%s{background : #%s;}%s", $bgclass, $trimmed, $trimmed, PHP_EOL);
}
echo "<style>" . implode($styles) . "</style>";
我有一个文本区域,其中填充了 000000
和 ffffff
等颜色代码,每种颜色都在单独的一行上,因此它看起来像:
000000
111111
222222
现在我将这些转换为实际的内联背景颜色:
$bgclass = $params->get('bgclass');
$bgcolors = $params->get('bgcolors');
$bglines = explode("\n", $bgcolors);
if ( !empty($bglines) ) {
echo "<style>";
foreach ( $bglines as $bgline ) {
echo "." . $bgclass . "-" . $bgline . "{background:#" . $bgline . ";}" . "\r\n";
}
echo "</style>";
}
现在输出如下:
<style>
.bg-000000
{background:#000000
;}
.bg-111111
{background:#111111
;}
.bg-222222
{background:#222222
;}
</style>
如何让输出变成这样:
<style>
.bg-000000{background:#000000;}
.bg-111111{background:#111111;}
.bg-222222{background:#222222;}
</style>
explode()
\r\n
而不是:
$bglines = explode("\r\n", $bgcolors);
另一种选择是 trim()
它:
$bglines = explode("\n", $bgcolors);
$bglines = array_map('trim', $bglines);
如果这是一个文件(正如我最初所想的那样),那么我会使用 file()
将文件读入数组并去除行尾:
$bglines = file('/path/to/file.txt', FILE_IGNORE_NEW_LINES);
我不确定您发布的方法有什么问题,但这可能会对您有所帮助。
<?php
$bglines = explode(PHP_EOL, $bgcolors);
$styles = [];
foreach($bglines as $bgline) {
$trimmed = trim($bgline);
$styles[] = sprintf(".%s-%s{background : #%s;}%s", $bgclass, $trimmed, $trimmed, PHP_EOL);
}
echo "<style>" . implode($styles) . "</style>";