PHP 8.2.30
Preview: HtmlLorem.php Size: 9.98 KB
/home/byroehnu/easetack.com/vendor/fakerphp/faker/src/Faker/Provider/HtmlLorem.php

<?php

namespace Faker\Provider;

use Faker\Generator;
use Faker\UniqueGenerator;

class HtmlLorem extends Base
{
    public const HTML_TAG = 'html';
    public const HEAD_TAG = 'head';
    public const BODY_TAG = 'body';
    public const DIV_TAG = 'div';
    public const P_TAG = 'p';
    public const A_TAG = 'a';
    public const SPAN_TAG = 'span';
    public const TABLE_TAG = 'table';
    public const THEAD_TAG = 'thead';
    public const TBODY_TAG = 'tbody';
    public const TR_TAG = 'tr';
    public const TD_TAG = 'td';
    public const TH_TAG = 'th';
    public const UL_TAG = 'ul';
    public const LI_TAG = 'li';
    public const H_TAG = 'h';
    public const B_TAG = 'b';
    public const I_TAG = 'i';
    public const TITLE_TAG = 'title';
    public const FORM_TAG = 'form';
    public const INPUT_TAG = 'input';
    public const LABEL_TAG = 'label';

    private $idGenerator;

    public function __construct(Generator $generator)
    {
        parent::__construct($generator);
        $generator->addProvider(new Lorem($generator));
        $generator->addProvider(new Internet($generator));
    }

    /**
     * @param int $maxDepth
     * @param int $maxWidth
     *
     * @return string
     */
    public function randomHtml($maxDepth = 4, $maxWidth = 4)
    {
        if (!class_exists(\DOMDocument::class, false)) {
            throw new \RuntimeException('ext-dom is required to use randomHtml.');
        }

        $document = new \DOMDocument();
        $this->idGenerator = new UniqueGenerator($this->generator);

        $head = $document->createElement('head');
        $this->addRandomTitle($head);

        $body = $document->createElement('body');
        $this->addLoginForm($body);
        $this->addRandomSubTree($body, $maxDepth, $maxWidth);

        $html = $document->createElement('html');
        $html->appendChild($head);
        $html->appendChild($body);

        $document->appendChild($html);

        return $document->saveHTML();
    }

    private function addRandomSubTree(\DOMElement $root, $maxDepth, $maxWidth)
    {
        --$maxDepth;

        if ($maxDepth <= 0) {
            return $root;
        }

        $siblings = self::numberBetween(1, $maxWidth);

        for ($i = 0; $i < $siblings; ++$i) {
            if ($maxDepth == 1) {
                $this->addRandomLeaf($root);
            } else {
                $sibling = $root->ownerDocument->createElement('div');
                $root->appendChild($sibling);
                $this->addRandomAttribute($sibling);
                $this->addRandomSubTree($sibling, self::numberBetween(0, $maxDepth), $maxWidth);
            }
        }

        return $root;
    }

    private function addRandomLeaf(\DOMElement $node): void
    {
        $rand = self::numberBetween(1, 10);

        switch ($rand) {
            case 1:
                $this->addRandomP($node);

                break;

            case 2:
                $this->addRandomA($node);

                break;

            case 3:
                $this->addRandomSpan($node);

                break;

            case 4:
                $this->addRandomUL($node);

                break;

            case 5:
                $this->addRandomH($node);

                break;

            case 6:
                $this->addRandomB($node);

                break;

            case 7:
                $this->addRandomI($node);

                break;

            case 8:
                $this->addRandomTable($node);

                break;

            default:
                $this->addRandomText($node);

                break;
        }
    }

    private function addRandomAttribute(\DOMElement $node): void
    {
        $rand = self::numberBetween(1, 2);

        switch ($rand) {
            case 1:
                $node->setAttribute('class', $this->generator->word());

                break;

            case 2:
                $node->setAttribute('id', (string) $this->idGenerator->randomNumber(5));

                break;
        }
    }

    private function addRandomP(\DOMElement $element, $maxLength = 10): void
    {
        $node = $element->ownerDocument->createElement(static::P_TAG);
        $node->textContent = $this->generator->sentence(self::numberBetween(1, $maxLength));
        $element->appendChild($node);
    }

    private function addRandomText(\DOMElement $element, $maxLength = 10): void
    {
        $text = $element->ownerDocument->createTextNode($this->generator->sentence(self::numberBetween(1, $maxLength)));
        $element->appendChild($text);
    }

    private function addRandomA(\DOMElement $element, $maxLength = 10): void
    {
        $text = $element->ownerDocument->createTextNode($this->generator->sentence(self::numberBetween(1, $maxLength)));
        $node = $element->ownerDocument->createElement(static::A_TAG);
        $node->setAttribute('href', $this->generator->safeEmailDomain());
        $node->appendChild($text);
        $element->appendChild($node);
    }

    private function addRandomTitle(\DOMElement $element, $maxLength = 10): void
    {
        $text = $element->ownerDocument->createTextNode($this->generator->sentence(self::numberBetween(1, $maxLength)));
        $node = $element->ownerDocument->createElement(static::TITLE_TAG);
        $node->appendChild($text);
        $element->appendChild($node);
    }

    private function addRandomH(\DOMElement $element, $maxLength = 10): void
    {
        $h = static::H_TAG . (string) self::numberBetween(1, 3);
        $text = $element->ownerDocument->createTextNode($this->generator->sentence(self::numberBetween(1, $maxLength)));
        $node = $element->ownerDocument->createElement($h);
        $node->appendChild($text);
        $element->appendChild($node);
    }

    private function addRandomB(\DOMElement $element, $maxLength = 10): void
    {
        $text = $element->ownerDocument->createTextNode($this->generator->sentence(self::numberBetween(1, $maxLength)));
        $node = $element->ownerDocument->createElement(static::B_TAG);
        $node->appendChild($text);
        $element->appendChild($node);
    }

    private function addRandomI(\DOMElement $element, $maxLength = 10): void
    {
        $text = $element->ownerDocument->createTextNode($this->generator->sentence(self::numberBetween(1, $maxLength)));
        $node = $element->ownerDocument->createElement(static::I_TAG);
        $node->appendChild($text);
        $element->appendChild($node);
    }

    private function addRandomSpan(\DOMElement $element, $maxLength = 10): void
    {
        $text = $element->ownerDocument->createTextNode($this->generator->sentence(self::numberBetween(1, $maxLength)));
        $node = $element->ownerDocument->createElement(static::SPAN_TAG);
        $node->appendChild($text);
        $element->appendChild($node);
    }

    private function addLoginForm(\DOMElement $element): void
    {
        $textInput = $element->ownerDocument->createElement(static::INPUT_TAG);
        $textInput->setAttribute('type', 'text');
        $textInput->setAttribute('id', 'username');

        $textLabel = $element->ownerDocument->createElement(static::LABEL_TAG);
        $textLabel->setAttribute('for', 'username');
        $textLabel->textContent = $this->generator->word();

        $passwordInput = $element->ownerDocument->createElement(static::INPUT_TAG);
        $passwordInput->setAttribute('type', 'password');
        $passwordInput->setAttribute('id', 'password');

        $passwordLabel = $element->ownerDocument->createElement(static::LABEL_TAG);
        $passwordLabel->setAttribute('for', 'password');
        $passwordLabel->textContent = $this->generator->word();

        $submit = $element->ownerDocument->createElement(static::INPUT_TAG);
        $submit->setAttribute('type', 'submit');
        $submit->setAttribute('value', $this->generator->word());

        $submit = $element->ownerDocument->createElement(static::FORM_TAG);
        $submit->setAttribute('action', $this->generator->safeEmailDomain());
        $submit->setAttribute('method', 'POST');
        $submit->appendChild($textLabel);
        $submit->appendChild($textInput);
        $submit->appendChild($passwordLabel);
        $submit->appendChild($passwordInput);
        $element->appendChild($submit);
    }

    private function addRandomTable(\DOMElement $element, $maxRows = 10, $maxCols = 6, $maxTitle = 4, $maxLength = 10): void
    {
        $rows = self::numberBetween(1, $maxRows);
        $cols = self::numberBetween(1, $maxCols);

        $table = $element->ownerDocument->createElement(static::TABLE_TAG);
        $thead = $element->ownerDocument->createElement(static::THEAD_TAG);
        $tbody = $element->ownerDocument->createElement(static::TBODY_TAG);

        $table->appendChild($thead);
        $table->appendChild($tbody);

        $tr = $element->ownerDocument->createElement(static::TR_TAG);
        $thead->appendChild($tr);

        for ($i = 0; $i < $cols; ++$i) {
            $th = $element->ownerDocument->createElement(static::TH_TAG);
            $th->textContent = $this->generator->sentence(self::numberBetween(1, $maxTitle));
            $tr->appendChild($th);
        }

        for ($i = 0; $i < $rows; ++$i) {
            $tr = $element->ownerDocument->createElement(static::TR_TAG);
            $tbody->appendChild($tr);

            for ($j = 0; $j < $cols; ++$j) {
                $th = $element->ownerDocument->createElement(static::TD_TAG);
                $th->textContent = $this->generator->sentence(self::numberBetween(1, $maxLength));
                $tr->appendChild($th);
            }
        }
        $element->appendChild($table);
    }

    private function addRandomUL(\DOMElement $element, $maxItems = 11, $maxLength = 4): void
    {
        $num = self::numberBetween(1, $maxItems);
        $ul = $element->ownerDocument->createElement(static::UL_TAG);

        for ($i = 0; $i < $num; ++$i) {
            $li = $element->ownerDocument->createElement(static::LI_TAG);
            $li->textContent = $this->generator->sentence(self::numberBetween(1, $maxLength));
            $ul->appendChild($li);
        }
        $element->appendChild($ul);
    }
}

Directory Contents

Dirs: 75 × Files: 20

Name Size Perms Modified Actions
ar_EG DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
ar_JO DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
ar_SA DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
at_AT DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
bg_BG DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
bn_BD DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
cs_CZ DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
da_DK DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
de_AT DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
de_CH DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
de_DE DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
el_CY DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
el_GR DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
en_AU DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
en_CA DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
en_GB DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
en_HK DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
en_IN DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
en_NG DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
en_NZ DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
en_PH DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
en_SG DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
en_UG DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
en_US DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
en_ZA DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
es_AR DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
es_ES DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
es_PE DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
es_VE DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
et_EE DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
fa_IR DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
fi_FI DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
fr_BE DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
fr_CA DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
fr_CH DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
fr_FR DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
he_IL DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
hr_HR DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
hu_HU DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
hy_AM DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
id_ID DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
is_IS DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
it_CH DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
it_IT DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
ja_JP DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
ka_GE DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
kk_KZ DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
ko_KR DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
lt_LT DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
lv_LV DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
me_ME DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
mn_MN DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
ms_MY DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
nb_NO DIR
- drwxrwxrwx 2025-05-16 16:14:40
Edit Download
ne_NP DIR
- drwxrwxrwx 2025-05-16 16:14:40
Edit Download
nl_BE DIR
- drwxrwxrwx 2025-05-16 16:14:40
Edit Download
nl_NL DIR
- drwxrwxrwx 2025-05-16 16:14:40
Edit Download
pl_PL DIR
- drwxrwxrwx 2025-05-16 16:14:40
Edit Download
pt_BR DIR
- drwxrwxrwx 2025-05-16 16:14:40
Edit Download
pt_PT DIR
- drwxrwxrwx 2025-05-16 16:14:40
Edit Download
ro_MD DIR
- drwxrwxrwx 2025-05-16 16:14:40
Edit Download
ro_RO DIR
- drwxrwxrwx 2025-05-16 16:14:40
Edit Download
ru_RU DIR
- drwxrwxrwx 2025-05-16 16:14:40
Edit Download
sk_SK DIR
- drwxrwxrwx 2025-05-16 16:14:40
Edit Download
sl_SI DIR
- drwxrwxrwx 2025-05-16 16:14:40
Edit Download
- drwxrwxrwx 2025-05-16 16:14:40
Edit Download
- drwxrwxrwx 2025-05-16 16:14:40
Edit Download
sr_RS DIR
- drwxrwxrwx 2025-05-16 16:14:40
Edit Download
sv_SE DIR
- drwxrwxrwx 2025-05-16 16:14:40
Edit Download
th_TH DIR
- drwxrwxrwx 2025-05-16 16:14:40
Edit Download
tr_TR DIR
- drwxrwxrwx 2025-05-16 16:14:40
Edit Download
uk_UA DIR
- drwxrwxrwx 2025-05-16 16:14:40
Edit Download
vi_VN DIR
- drwxrwxrwx 2025-05-16 16:14:40
Edit Download
zh_CN DIR
- drwxrwxrwx 2025-05-16 16:14:40
Edit Download
zh_TW DIR
- drwxrwxrwx 2025-05-16 16:14:40
Edit Download
3.49 KB lrw-rw-rw- 2024-11-21 13:46:39
Edit Download
2.19 KB lrw-rw-rw- 2024-11-21 13:46:39
Edit Download
22.20 KB lrw-rw-rw- 2024-11-21 13:46:39
Edit Download
1.79 KB lrw-rw-rw- 2024-11-21 13:46:39
Edit Download
4.64 KB lrw-rw-rw- 2024-11-21 13:46:39
Edit Download
901 B lrw-rw-rw- 2024-11-21 13:46:39
Edit Download
12.10 KB lrw-rw-rw- 2024-11-21 13:46:39
Edit Download
25.10 KB lrw-rw-rw- 2024-11-21 13:46:39
Edit Download
9.98 KB lrw-rw-rw- 2024-11-21 13:46:39
Edit Download
6.00 KB lrw-rw-rw- 2024-11-21 13:46:39
Edit Download
17.17 KB lrw-rw-rw- 2024-11-21 13:46:39
Edit Download
7.70 KB lrw-rw-rw- 2024-11-21 13:46:39
Edit Download
648 B lrw-rw-rw- 2024-11-21 13:46:39
Edit Download
13.21 KB lrw-rw-rw- 2024-11-21 13:46:39
Edit Download
10.42 KB lrw-rw-rw- 2024-11-21 13:46:39
Edit Download
3.23 KB lrw-rw-rw- 2024-11-21 13:46:39
Edit Download
6.45 KB lrw-rw-rw- 2024-11-21 13:46:39
Edit Download
6.65 KB lrw-rw-rw- 2024-11-21 13:46:39
Edit Download
8.46 KB lrw-rw-rw- 2024-11-21 13:46:39
Edit Download
1.78 KB lrw-rw-rw- 2024-11-21 13:46:39
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).