sprintf php - 它是如何工作的?

时间:2012-07-19 17:20:11

标签: php wordpress-theming printf

我正在使用sprintf的主题,我很新。我无法从开发人员那里获得定制支持,所以我试图自己解决这个问题。

不了解sprintf是如何工作的,我用Google搜索了大量试图找到我认为简单的修复的页面。

主题使用%s加载文本字符串,在本例中为页面标题。我只想将标题链接到页面!而已!不能少,不多了。我能够在下面找到一些东西:

// Featured columns
case 'columns':
    $count = Website::getThemeOption('front_page/columns/count');
    $classes = array('one', 'two', 'three', 'four');
    $columns = array();
    for ($i = 0; $i < $count; $i++) {
        extract(Website::getThemeOption('front_page/columns/column/'.$i, true)->toArray());
        $text = DroneFunc::stringToHTML($text, false);
        if ($more && $link) {
            $text .= sprintf(' <a href="%s" class="more">%s</a>', $link, $more);
        }
        $columns[] = sprintf(
            '<li class="column">'.
                '<img src="%s/data/img/icons/32/%s" alt="" class="icon">'.
                '<h1><a href="%1$s">%s</a></h1><p>%s</p>'.
            '</li>',
            Website::get('template_uri'), $icon, $title, $text
        );
    }
    ?>
    <section class="columns <?php echo $classes[$count-1]; ?> clear">
        <ul>
            <?php echo implode('', $columns); ?>
        </ul>
    </section>
    <?php
    break;

现在最初,没有超链接引用...我添加了。现在这样做是使h1标题可点击,但它只是到主题文件夹的根目录,而不是标题的页面。

非常感谢任何理解这一点并使其发挥作用的帮助。

1 个答案:

答案 0 :(得分:3)

Sprintf basix

Sprintf将参数添加到占位符所在位置的第一个参数(以%开头)。

例如:

$name = 'Rob';
$str = sprintf('Hello, I am %s', $name); // become: Hello, I am Rob

%之后的字母是参数类型的第一个字母。字符串为%s,小数为%d。例如:

$name = 'Rob';
$age = 26;
$str = sprintf('Hello, I am %s and I am %d years old.', $name, $age);
// become: Hello, I am Rob and I am 26 years old.

Sprintf使用参数的顺序来确定将其放在字符串中的位置。第一个占位符获取第二个参数,第二个占位符是thirth,等等 如果要更改此设置,则需要在%和类型之间指定。您可以通过<place>$执行此操作,其中<place>是地点编号。

$name = 'Rob';
$age = 26;
$str = sprintf('Hello, I am %2$s and I am %1$d years old.', $age, $name);
// become: Hello, I am Rob and I am 26 years old.

答案

你这样做:

'<h1><a href="%1$s">%s</a></h1><p>%s</p>'

%1$s是第一个参数,即template_uri。我想这不是你要链接到的网址?您想要链接到$link中的uri。只需将其放在参数中并引用它:

sprintf(
    '...'.
    '<h1><a href="%s">%s</a></h1><p>%s</p>',
    Website::get('template_uri'), $icon, $link, $title, $text
);