我的 HTML 代码中有一个下拉菜单,其中充满了 PHP while 循环。 例如:
<select name="dd1" class="form-control" id="dd1">
<option value="" disabled="disabled" selected>Select...</option>
<?php
while($row = mysqli_fetch_array($sql, MYSQL_ASSOC)){
?>
<option value="<?php echo $row['ID'] ?>"> <?php echo $row['PName'] . "\t | " . $row['AName'] ?> </option>
<?php
}
?>
</select>
我想在 Name1 | 之间做一个制表符姓名2.我用\t 尝试过,但它已被忽略。 有人知道我能做什么吗?
如果我用 来做的话它看起来像这样:
我希望所有第二个名称(这意味着以 | 开头)具有相同的位置。
最佳答案
您可以使用sprintf用空格填充字符串,然后用
替换空格(前提是您使用等宽字体):
<select name="dd1" class="form-control" id="dd1">
<option value="" disabled="disabled" selected>Select...</option>
<?php
$widthLeft = 30; // width in symbols
$widthRight = 30; // width in symbols
$separator = '|';
while ($row = mysqli_fetch_array($sql, MYSQL_ASSOC)) {
$optionFormatted = sprintf("%-{$widthLeft}s{$separator}%-{$widthRight}s", $row['PName'], $row['AName']);
$optionHtml = str_replace(' ', ' ', $optionFormatted);
?>
<option value="<?php echo $row['ID'] ?>"> <?php echo $optionHtml ?> </option>
<?php
}
?>
</select>
更多解决方案:
- Can I use HTML tags in the options for select elements?
- How can I style a select option like a table?
更新:
对于多字节字符串,您可以使用以下函数:
<?php
function mb_strpad(string $input, int $pad_length, string $pad_string = ' ', int $pad_type = STR_PAD_RIGHT, string $encoding = 'UTF-8'): string
{
$diff = $pad_length - mb_strlen($input, $encoding);
if ($diff <= 0) {
return $input;
}
$pad = str_pad('', $diff, $pad_string);
if ($pad_type === STR_PAD_LEFT) {
return $pad . $input;
}
return $input . $pad;
}
这样你的代码将如下所示:
<select name="dd1" class="form-control" id="dd1">
<option value="" disabled="disabled" selected>Select...</option>
<?php
$widthLeft = 30; // width in symbols
$widthRight = 30; // width in symbols
$separator = '|';
while ($row = mysqli_fetch_array($sql, MYSQL_ASSOC)) {
$optionFormatted = mb_strpad($row['PName'], $widthLeft)
. $separator
. mb_strpad($row['AName'], $widthRight);
$optionHtml = str_replace(' ', ' ', $optionFormatted);
?>
<option value="<?php echo $row['ID'] ?>"> <?php echo $optionHtml ?> </option>
<?php
}
?>
</select>
关于php - 如何在 HTML 下拉列表中使用制表符来格式化文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44646492/