public function element($name = 'div', $attr = array(), $text = null) { $element = (object) array('name' => $name, 'attr' => $attr); if (empty($element->name)) { return false; } $element->one_liner = in_array($element->name, self::$sets['self_close']); $html = array(); if ('a' === $element->name) { if (!isset($element->attr['title'])) { $element->attr['title'] = Lorem::sentence(Base::numberBetween(1, Base::numberBetween(3, 9))); } if (!isset($element->attr['href'])) { $element->attr['href'] = $this->generator->url(); } } if ('img' === $element->name) { $element = $this->html_element_img($element, array('placeholdit', 'lorempixel', 'unsplashit')); } $attributes = array(); foreach ($element->attr as $key => $value) { $attributes[] = sprintf('%s="%s"', $key, esc_attr($value)); } $html[] = sprintf('<%s%s>', $element->name, (!empty($attributes) ? ' ' : '') . implode(' ', $attributes)); if (!$element->one_liner) { if (!is_null($text)) { $html[] = $text; } elseif (in_array($element->name, self::$sets['inline'])) { $text = Lorem::text(Base::numberBetween(5, 25)); $html[] = substr($text, 0, strlen($text) - 1); } elseif (in_array($element->name, self::$sets['item'])) { $text = Lorem::text(Base::numberBetween(10, 60)); $html[] = substr($text, 0, strlen($text) - 1); } elseif (in_array($element->name, self::$sets['list'])) { for ($i = 0; $i < Base::numberBetween(1, 15); $i++) { $html[] = $this->element('li'); } } elseif (in_array($element->name, self::$sets['header'])) { $text = Lorem::text(Base::numberBetween(60, 200)); $html[] = substr($text, 0, strlen($text) - 1); } else { $html[] = $this->random_apply_element('a', Base::numberBetween(0, 10), Lorem::paragraph(Base::numberBetween(2, 40))); } $html[] = sprintf('</%s>', $element->name); } return implode('', $html); }