PATH:
home
/
centosnipponia
/
public_html
/
nipponiacom2
/
libraries
/
regularlabs
/
src
<?php /** * @package Regular Labs Library * @version 19.2.10100 * * @author Peter van Westen <info@regularlabs.com> * @link http://www.regularlabs.com * @copyright Copyright © 2019 Regular Labs All Rights Reserved * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL */ namespace RegularLabs\Library; defined('_JEXEC') or die; /** * Class HtmlTag * @package RegularLabs\Library */ class HtmlTag { /** * Combine 2 opening html tags into one * * @param string $tag1 * @param string $tag2 * * @return string */ public static function combine($tag1, $tag2) { // Return if tags are the same if ($tag1 == $tag2) { return $tag1; } if ( ! RegEx::match('<([a-z][a-z0-9]*)', $tag1, $tag_type)) { return $tag2; } $tag_type = $tag_type[1]; if ( ! $attribs = self::combineAttributes($tag1, $tag2)) { return '<' . $tag_type . '>'; } return '<' . $tag_type . ' ' . $attribs . '>'; } /** * Extract attribute value from a html tag string by given attribute key * * @param string $key * @param string $string * * @return string */ public static function getAttributeValue($key, $string) { if (empty($key) || empty($string)) { return ''; } RegEx::match(RegEx::quote($key) . '="([^"]*)"', $string, $match); if (empty($match)) { return ''; } return $match[1]; } /** * Extract all attributes from a html tag string * * @param string $string * * @return array */ public static function getAttributes($string) { if (empty($string)) { return []; } RegEx::matchAll('([a-z0-9-_]+)="([^"]*)"', $string, $matches); if (empty($matches)) { return []; } $attribs = []; foreach ($matches as $match) { $attribs[$match[1]] = $match[2]; } return $attribs; } /** * Combine attribute values from 2 given html tag strings (or arrays of attributes) * And return as a sting of attributes * * @param string /array $string1 * @param string /array $string2 * * @return string */ public static function combineAttributes($string1, $string2, $flatten = true) { $attribsutes1 = is_array($string1) ? $string1 : self::getAttributes($string1); $attribsutes2 = is_array($string2) ? $string2 : self::getAttributes($string2); $duplicate_attributes = array_intersect_key($attribsutes1, $attribsutes2); // Fill $attributes with the unique ids $attributes = array_diff_key($attribsutes1, $attribsutes2) + array_diff_key($attribsutes2, $attribsutes1); // List of attrubute types that can only contain one value $single_value_attributes = ['id', 'href']; // Add/combine the duplicate ids foreach ($duplicate_attributes as $key => $val) { if (in_array($key, $single_value_attributes)) { $attributes[$key] = $attribsutes2[$key]; continue; } // Combine strings, but remove duplicates // "aaa bbb" + "aaa ccc" = "aaa bbb ccc" // use a ';' as a concatenated for javascript values (keys beginning with 'on') // Otherwise use a space (like for classes) $glue = substr($key, 0, 2) == 'on' ? ';' : ' '; $attributes[$key] = implode($glue, array_merge(explode($glue, $attribsutes1[$key]), explode($glue, $attribsutes2[$key]))); } return $flatten ? self::flattenAttributes($attributes) : $attributes; } /** * Convert array of attributes to a html style string * * @param array $attributes * * @return string */ public static function flattenAttributes($attributes) { foreach ($attributes as $key => &$val) { $val = str_replace('"', '"', $val); $val = $key . '="' . $val . '"'; } return implode(' ', (array) $attributes); } }
[+]
..
[-] ActionLogPlugin.php
[edit]
[-] Alias.php
[edit]
[+]
Api
[-] ArrayHelper.php
[edit]
[-] Article.php
[edit]
[-] Cache.php
[edit]
[+]
Condition
[-] Condition.php
[edit]
[-] ConditionContent.php
[edit]
[-] Conditions.php
[edit]
[-] Database.php
[edit]
[-] Date.php
[edit]
[-] DB.php
[edit]
[-] Document.php
[edit]
[-] EditorButton.php
[edit]
[-] EditorButtonHelper.php
[edit]
[-] EditorButtonPlugin.php
[edit]
[-] EditorButtonPopup.php
[edit]
[-] Extension.php
[edit]
[-] Field.php
[edit]
[-] FieldGroup.php
[edit]
[-] File.php
[edit]
[-] Form.php
[edit]
[-] Html.php
[edit]
[-] HtmlTag.php
[edit]
[-] Http.php
[edit]
[-] Image.php
[edit]
[-] Language.php
[edit]
[-] License.php
[edit]
[-] Log.php
[edit]
[-] MobileDetect.php
[edit]
[-] Parameters.php
[edit]
[-] PluginTag.php
[edit]
[-] Protect.php
[edit]
[-] RegEx.php
[edit]
[-] ShowOn.php
[edit]
[-] StringHelper.php
[edit]
[-] Title.php
[edit]
[-] Uri.php
[edit]
[-] Version.php
[edit]
[-] Xml.php
[edit]
[-] .htaccess.disabled
[edit]