如何使用php从换行符分隔的字符串生成一组HTML列表项



如何使用php从换行字符串生成一组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工作表中所有行的HTML输出,请使用span标记,如下所示:(显示换行符是为了说明(

<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>

上,然后转到图纸的最后一行。

我需要能够使用分隔符来添加标记,因为数据中有逗号,所以我不能使用逗号;并且我不能在工作表中添加任何其他分隔符。

所以我需要的是这个特定的标记;我需要<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>

我还需要说明空项目,即如果;类名";不退出,则跳过输出该项目的<li></li>

我看过这个问题从逗号分隔的列表中生成一组HTML列表项?PHP,但我得到错误explode(): Argument #2 ($string) must be of type string, array given.

如何分解/内爆以输出所需的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函数的第一个参数可用于分隔符。您可以使用array_slice函数将数组的第一个条目以外的所有条目传递到此函数中。如果希望数组项显示为无序列表,可以使用"</li><li>"作为分隔符。要跳过空列表项,可以使用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;
}

最新更新