如何使用 php 从 \n 换行分隔字符串生成一组 HTML 列表项?
How can I generate a set of HTML list items from \n newline separated string using php?
如何使用 php 从 \n 换行符分隔字符串生成一组 HTML 列表项?
我正在使用带有 foreach 循环的 Google Sheet PHP API
// authentication not shown
$range = 'Sheet3!AD2:Z';
$response = $service->spreadsheets_values->get($spreadsheetId, $range);
$values = $response->getValues();
foreach($values as $val) {
$valuespan = "<span class=\"record\">".implode($val)."</span>";
echo $valuespan;
}
获取 Google Sheet 中所有行的 HTML 输出,包裹在 span 标记中,如下所示:
(为了说明显示了 \n 换行符)
<span class="record">Customer 1 \n
Exercise Physiologist \n
PT, DPT, COMT \n
Class Name \n
South Physical Therapy \n
City 1 \n
AR \n
</span>
<span class="record">Customer 2 \n
Exercise Physiologist \n
PT \n
Class Name \n
Central Therapy \n
City 2 \n
AL \n
</span>
...一直到 Sheet.
的最后一行
我需要能够使用 \n 定界符来添加标记,因为我不能使用逗号,因为逗号在数据中;而且我无法向 Sheet.
添加任何其他分隔符
所以我需要的是这个特定的标记;我需要 <h1>
标签中的每个客户和 <li></li>
标签中的其他项目,如下所示:
<span class="record">
<h1>Customer 1</h1>
<ul>
<li>Exercise Physiologist</li>
<li>PT, DPT, COMT</li>
<li>Class Name</li>
<li>South Physical Therapy</li>
<li>City 1</li>
<li>AR</li>
</ul>
</span>
我还需要考虑空项目,即如果“Class 名称”不存在,则跳过为该项目输出 <li></li>
。
我看过这个问题 Generate a set of HTML list items from a comma separated list? PHP 但我得到了错误
explode(): Argument #2 ($string) must be of type string, array given.
如何explode/implode输出需要的html?
或者还有其他php功能更有用吗?
编辑 12/13/21
我发现我需要能够对某些字段使用 if
结构,但这不适用于连接字符串,所以这就是我正在使用的。从编程的意义上讲,它可能很丑陋;如果是,请添加评论。
foreach($values as $val) {
$valuearray =explode("\n", implode($val)); // explode string into array
$name = $valuearray[0];
$focus = $valuearray[1];
$certification = $valuearray[2];
$course = $valuearray[3];
$business = $valuearray[4];
$url = $valuearray[5];
$address = $valuearray[6];
$city = $valuearray[7];
$state = $valuearray[8];
echo '<h1 class="name">' . $name . '</h1>';
echo '<ul>';
if($focus ?? true) {echo '<li class="focus">Focus: ' . $focus . '</li>'; }
if($certification ?? true) {echo '<li class="certification">Certification: ' . $certification . '</li>'; }
if($course ?? true) {echo '<li class="course">Course: ' . $course . '</li>'; }
if($url ?? true) {
echo '<li class="business">Business: <a class="business-link" target="_blank" rel="noopener noreferrer" href="https://' . $url . ' ">' . $business . '</a></li>';
} elseif ($business ?? true) {
echo '<li class="business">Business: ' . $business . '</li>';
}
if($address ?? true) {
echo '<li class="address">Location: ' . $address . ', ' . $city . ', ' . $state . '</li>';
} else {
echo '<li class="address">Location: ' . $city . ', ' . $state . '</li>';
}
echo '</ul>';
}
因为您的单元格值使用 \n
作为分隔符,所以首先使用 explode
函数将单元格值从字符串分解为数组。然后,取这个数组的第一项作为表头添加。
implode
function can be used for a separator. You can pass all but the first entry of your array into this function using the array_slice
function. If you want your array items to display as an unordered list, you can use "</li><li>"
as your separator. To skip empty list items you can use str_replace
的第一个参数替换"<li></li>"
的所有实例。
foreach($values as $val) {
$valuearray = explode("\n", implode($val)); // explode string into array
$valuespan = "<span class=\"record\">";
$valuespan = $valuespan . "<h1>" . $valuearray[0] . "</h1>"; // add heading
$valuespan = $valuespan . "<ul><li>" . implode("</li><li>", array_slice($valuearray, 1)) . "</li></ul></span>"; // add remaining array as list items
$valuespan = str_replace("<li></li>", "", $valuespan); // remove empty list items
echo $valuespan;
}
如何使用 php 从 \n 换行符分隔字符串生成一组 HTML 列表项?
我正在使用带有 foreach 循环的 Google Sheet PHP API
// authentication not shown
$range = 'Sheet3!AD2:Z';
$response = $service->spreadsheets_values->get($spreadsheetId, $range);
$values = $response->getValues();
foreach($values as $val) {
$valuespan = "<span class=\"record\">".implode($val)."</span>";
echo $valuespan;
}
获取 Google Sheet 中所有行的 HTML 输出,包裹在 span 标记中,如下所示: (为了说明显示了 \n 换行符)
<span class="record">Customer 1 \n
Exercise Physiologist \n
PT, DPT, COMT \n
Class Name \n
South Physical Therapy \n
City 1 \n
AR \n
</span>
<span class="record">Customer 2 \n
Exercise Physiologist \n
PT \n
Class Name \n
Central Therapy \n
City 2 \n
AL \n
</span>
...一直到 Sheet.
的最后一行我需要能够使用 \n 定界符来添加标记,因为我不能使用逗号,因为逗号在数据中;而且我无法向 Sheet.
添加任何其他分隔符所以我需要的是这个特定的标记;我需要 <h1>
标签中的每个客户和 <li></li>
标签中的其他项目,如下所示:
<span class="record">
<h1>Customer 1</h1>
<ul>
<li>Exercise Physiologist</li>
<li>PT, DPT, COMT</li>
<li>Class Name</li>
<li>South Physical Therapy</li>
<li>City 1</li>
<li>AR</li>
</ul>
</span>
我还需要考虑空项目,即如果“Class 名称”不存在,则跳过为该项目输出 <li></li>
。
我看过这个问题 Generate a set of HTML list items from a comma separated list? PHP 但我得到了错误
explode(): Argument #2 ($string) must be of type string, array given.
如何explode/implode输出需要的html?
或者还有其他php功能更有用吗?
编辑 12/13/21
我发现我需要能够对某些字段使用 if
结构,但这不适用于连接字符串,所以这就是我正在使用的。从编程的意义上讲,它可能很丑陋;如果是,请添加评论。
foreach($values as $val) {
$valuearray =explode("\n", implode($val)); // explode string into array
$name = $valuearray[0];
$focus = $valuearray[1];
$certification = $valuearray[2];
$course = $valuearray[3];
$business = $valuearray[4];
$url = $valuearray[5];
$address = $valuearray[6];
$city = $valuearray[7];
$state = $valuearray[8];
echo '<h1 class="name">' . $name . '</h1>';
echo '<ul>';
if($focus ?? true) {echo '<li class="focus">Focus: ' . $focus . '</li>'; }
if($certification ?? true) {echo '<li class="certification">Certification: ' . $certification . '</li>'; }
if($course ?? true) {echo '<li class="course">Course: ' . $course . '</li>'; }
if($url ?? true) {
echo '<li class="business">Business: <a class="business-link" target="_blank" rel="noopener noreferrer" href="https://' . $url . ' ">' . $business . '</a></li>';
} elseif ($business ?? true) {
echo '<li class="business">Business: ' . $business . '</li>';
}
if($address ?? true) {
echo '<li class="address">Location: ' . $address . ', ' . $city . ', ' . $state . '</li>';
} else {
echo '<li class="address">Location: ' . $city . ', ' . $state . '</li>';
}
echo '</ul>';
}
因为您的单元格值使用 \n
作为分隔符,所以首先使用 explode
函数将单元格值从字符串分解为数组。然后,取这个数组的第一项作为表头添加。
implode
function can be used for a separator. You can pass all but the first entry of your array into this function using the array_slice
function. If you want your array items to display as an unordered list, you can use "</li><li>"
as your separator. To skip empty list items you can use str_replace
的第一个参数替换"<li></li>"
的所有实例。
foreach($values as $val) {
$valuearray = explode("\n", implode($val)); // explode string into array
$valuespan = "<span class=\"record\">";
$valuespan = $valuespan . "<h1>" . $valuearray[0] . "</h1>"; // add heading
$valuespan = $valuespan . "<ul><li>" . implode("</li><li>", array_slice($valuearray, 1)) . "</li></ul></span>"; // add remaining array as list items
$valuespan = str_replace("<li></li>", "", $valuespan); // remove empty list items
echo $valuespan;
}