Статьи

Форматированные строки с PHP

Когда вы используете PHP для ввода строки на страницу, большую часть времени вы будете использовать синтаксис echo, который возьмет следующую строку и отобразит эту строку в HTML.

Вы даже можете объединить несколько строк или переменных вместе для вывода с помощью синтаксиса echo.

Вот пример использования echo для вывода нескольких опций в поле выбора .

<?php
        $options = array(
                        'option1' => 'title1',
                        'option2' => 'title2',
                        'option3' => 'title3',
                        'option4' => 'title4',
                        'option5' => 'title5'
                        );
        echo '
<select>';
        foreach($options as $key => $val)
        {
            echo '
<option value="'.$key.'">'.$val.'</option>
';
        }
        echo '</selected>';
?>

Как вы можете видеть из синтаксиса эха, вы можете создать элемент HTML с помощью PHP. Этот код использует объединенную строку для вставки переменных в атрибут value и заголовок внутри тега option. Это довольно легко прочитать и хорошо использовать в обычной разработке, но что если вы использовали этот метод для отображения более сложного элемента с большим количеством атрибутов, таких как тег изображения.

Это создаст 5 тегов изображения, которые будут заполнять ряд различных атрибутов.

<?php
        $options = array(
                        'image1' => array('class' => 'style', 'alt' => 'Image 1', 'title' => 'Image 1', 'width' => '100', 'height' => '100', 'src' => 'http://www.example.com/image1.jpg'),
                        'image1' => array('class' => 'style', 'alt' => 'Image 2', 'title' => 'Image 2', 'width' => '200', 'height' => '200', 'src' => 'http://www.example.com/image2.jpg'),
                        'image1' => array('class' => 'style', 'alt' => 'Image 3', 'title' => 'Image 3', 'width' => '300', 'height' => '300', 'src' => 'http://www.example.com/image3.jpg'),
                        'image1' => array('class' => 'style', 'alt' => 'Image 4', 'title' => 'Image 4', 'width' => '400', 'height' => '400', 'src' => 'http://www.example.com/image4.jpg'),
                        'image1' => array('class' => 'style', 'alt' => 'Image 5', 'title' => 'Image 5', 'width' => '500', 'height' => '500', 'src' => 'http://www.example.com/image5.jpg'),
                        );
        foreach($options as $key => $val)
        {
            echo '<img class="'.$val["class"].'" alt="'.$val["alt"].'" title="'.$val["title"].'" width="'.$val["width"].'" height="'.$val["height"].'" src="'.$val["src"].'" />';
        }
    ?>

На этот раз, если вы посмотрите на синтаксис echo для вывода тегов изображения, он не очень читабелен и может быть трудно определить, что мы объединяем для создания тега изображения, особенно с разными одинарными и двойными кавычками, становится действительно трудно читать ,

Решение состоит в том, чтобы PHP встроил функции sprintf () и printf () для создания форматированной строки для вывода в HTML.

Обе эти функции выполняют одно и то же, но printf () напрямую выводит строку, а функция sprintf () возвращает отформатированную строку.

Вот как это будет использоваться для отображения тега изображения.

Функция Printf () Отображение тега изображения

<?php
        $options = array(
                        'image1' => array('class' => 'style', 'alt' => 'Image 1', 'title' => 'Image 1', 'width' => '100', 'height' => '100', 'src' => 'http://www.example.com/image1.jpg'),
                        'image1' => array('class' => 'style', 'alt' => 'Image 2', 'title' => 'Image 2', 'width' => '200', 'height' => '200', 'src' => 'http://www.example.com/image2.jpg'),
                        'image1' => array('class' => 'style', 'alt' => 'Image 3', 'title' => 'Image 3', 'width' => '300', 'height' => '300', 'src' => 'http://www.example.com/image3.jpg'),
                        'image1' => array('class' => 'style', 'alt' => 'Image 4', 'title' => 'Image 4', 'width' => '400', 'height' => '400', 'src' => 'http://www.example.com/image4.jpg'),
                        'image1' => array('class' => 'style', 'alt' => 'Image 5', 'title' => 'Image 5', 'width' => '500', 'height' => '500', 'src' => 'http://www.example.com/image5.jpg'),
                        );
        foreach($options as $key => $val)
        {
            printf('<img class="%s" alt="%s" title="%s" width="%s" height="%s" src="%s" />',
                    $val["class"],
                    $val["alt"],
                    $val["title"],
                    $val["width"],
                    $val["height"],
                    $val["src"]);
        }
    ?>

Sprintf () Функция Отображение тега изображения

<?php
        $options = array(
                        'image1' => array('class' => 'style', 'alt' => 'Image 1', 'title' => 'Image 1', 'width' => '100', 'height' => '100', 'src' => 'http://www.example.com/image1.jpg'),
                        'image1' => array('class' => 'style', 'alt' => 'Image 2', 'title' => 'Image 2', 'width' => '200', 'height' => '200', 'src' => 'http://www.example.com/image2.jpg'),
                        'image1' => array('class' => 'style', 'alt' => 'Image 3', 'title' => 'Image 3', 'width' => '300', 'height' => '300', 'src' => 'http://www.example.com/image3.jpg'),
                        'image1' => array('class' => 'style', 'alt' => 'Image 4', 'title' => 'Image 4', 'width' => '400', 'height' => '400', 'src' => 'http://www.example.com/image4.jpg'),
                        'image1' => array('class' => 'style', 'alt' => 'Image 5', 'title' => 'Image 5', 'width' => '500', 'height' => '500', 'src' => 'http://www.example.com/image5.jpg'),
                        );
        foreach($options as $key => $val)
        {
            $image = sprintf('<img class="%s" alt="%s" title="%s" width="%s" height="%s" src="%s" />',
                    $val["class"],
                    $val["alt"],
                    $val["title"],
                    $val["width"],
                    $val["height"],
                    $val["src"]);
            echo $image;
        }
    ?>

Как вы можете видеть, использование функций printf () и sprintf () позволяет вам гораздо более читаемый код для вывода отформатированных строк.