<?php
function parseAttributes
(array $htmlOptions=array()) {
$res = '';
foreach($htmlOptions as $option => $value)
$res .= $option . '="' . str_replace('"', '\\"', $value) . '" '; }
function tag
($tag, array $htmlOptions=array(), $content=false, $encodeContent=false, $withCloseTag=true) {
$html='<' . trim($tag . ' ' . parseAttributes
($htmlOptions)); if($content===false)
return $withCloseTag ? $html . '></' . $tag . '>' : $html . '>';
if($encodeContent)
return $withCloseTag ? $html . '>' . $content . '</' . $tag . '>' : $html . '/>' . $content;
}
tag
('a', array('href'=>'http://f...content-available-to-author-only...o.bar', 'class'=>'foo', 'id' => 'bar')), tag
('span', array('style' => 'foo=bar;lorem=dolor;', 'name'=>'"barr"')), tag
('div', array('class' => 'test'), 'работает'), tag
('br', array(), false, false, false));
PD9waHAKCmZ1bmN0aW9uIHBhcnNlQXR0cmlidXRlcyhhcnJheSAkaHRtbE9wdGlvbnM9YXJyYXkoKSkKewoJJHJlcyA9ICcnOwoJZm9yZWFjaCgkaHRtbE9wdGlvbnMgYXMgJG9wdGlvbiA9PiAkdmFsdWUpCgkJJHJlcyAuPSAkb3B0aW9uIC4gJz0iJyAuIHN0cl9yZXBsYWNlKCciJywgJ1xcIicsICR2YWx1ZSkgLiAnIiAnOwoJcmV0dXJuIGh0bWxzcGVjaWFsY2hhcnModHJpbSgkcmVzKSwgRU5UX05PUVVPVEVTKTsKfQpmdW5jdGlvbiB0YWcoJHRhZywgYXJyYXkgJGh0bWxPcHRpb25zPWFycmF5KCksICRjb250ZW50PWZhbHNlLCAkZW5jb2RlQ29udGVudD1mYWxzZSwgJHdpdGhDbG9zZVRhZz10cnVlKQp7CiAgICAkdGFnID0gaHRtbHNwZWNpYWxjaGFycygkdGFnKTsKICAgICRodG1sPSc8JyAuIHRyaW0oJHRhZyAuICcgJyAuIHBhcnNlQXR0cmlidXRlcygkaHRtbE9wdGlvbnMpKTsKICAgIGlmKCRjb250ZW50PT09ZmFsc2UpCiAgICAgICAgcmV0dXJuICR3aXRoQ2xvc2VUYWcgPyAkaHRtbCAuICc+PC8nIC4gJHRhZyAuICc+JyA6ICRodG1sIC4gJz4nOwogICAgaWYoJGVuY29kZUNvbnRlbnQpCiAgICAgICAgJGNvbnRlbnQgPSBodG1sc3BlY2lhbGNoYXJzKCRjb250ZW50LCBFTlRfTk9RVU9URVMpOwogICAgcmV0dXJuICR3aXRoQ2xvc2VUYWcgPyAkaHRtbCAuICc+JyAuICRjb250ZW50IC4gJzwvJyAuICR0YWcgLiAnPicgOiAkaHRtbCAuICcvPicgLiAkY29udGVudDsKfQoKdmFyX2R1bXAoCgl0YWcoJ2EnLCBhcnJheSgnaHJlZic9PidodHRwOi8vZi4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4uby5iYXInLCAnY2xhc3MnPT4nZm9vJywgJ2lkJyA9PiAnYmFyJykpLAoJdGFnKCdzcGFuJywgYXJyYXkoJ3N0eWxlJyA9PiAnZm9vPWJhcjtsb3JlbT1kb2xvcjsnLCAnbmFtZSc9PiciYmFyciInKSksCgl0YWcoJ2RpdicsIGFycmF5KCdjbGFzcycgPT4gJ3Rlc3QnKSwgJ9GA0LDQsdC+0YLQsNC10YInKSwKCXRhZygnYnInLCBhcnJheSgpLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQopOw==