php - 如何在 HTML 下拉列表中使用制表符来格式化文本

标签 php html format dropdown

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

enter image description here

我想在 Name1 | 之间做一个制表符姓名2.我用\t 尝试过,但它已被忽略。 有人知道我能做什么吗?

如果我用   来做的话它看起来像这样:

enter image description here

我希望所有第二个名称(这意味着以 | 开头)具有相同的位置。

最佳答案

您可以使用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(' ', '&nbsp;', $optionFormatted);
        ?>
        <option value="<?php echo $row['ID'] ?>"> <?php echo $optionHtml ?> </option>
        <?php
    }
    ?>    
</select> 

更多解决方案:


更新:

对于多字节字符串,您可以使用以下函数:

<?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(' ', '&nbsp;', $optionFormatted);
        ?>
        <option value="<?php echo $row['ID'] ?>"> <?php echo $optionHtml ?> </option>
        <?php
    }
    ?>
</select>

关于php - 如何在 HTML 下拉列表中使用制表符来格式化文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44646492/

相关文章:

php - 如何使用 php 优化/过滤来自 mysql 数据库的搜索结果?

java - 使用 %h 格式化整数并添加前导零

javascript - jQuery:从数据属性中删除除前 4 个字符之外的所有字符

xslt - 在 XML 元素中显示当前日期

Android 数字格式不知何故错误,我得到的不是 3.5,而是 3.499999999,为什么?

php - 将两个函数组合在一起

php - 使用 PHP/MYSQL 填充 HTML 下拉列表

php - 如何检查与php中的随机字符匹配的数组数据?

php - 仅格式化 PHP 生成的 HTML 表中的一列

javascript - KnockoutJS observableArray : group data in foreach