Ниже приведен фрагмент кода, показывающий, как отображать n цифр. Фокус в том, чтобы установить переменную pp в 1, за которой следуют n нулей. В приведенном ниже примере значение переменной pp имеет 5 нулей, поэтому будут отображаться 5 цифр.
double pp = 10000;
double myVal = 22.268699999999967;
String needVal = "22.2687";
double i = (5.0/pp);
String format = "%10.4f";
String getVal = String.format(format,(Math.round((myVal +i)*pp)/pp)-i).trim();
HTML Purifier - это стандартная библиотека фильтров HTML, написанная на PHP. HTML-очиститель не только удалит весь вредоносный код (более известный как XSS) с тщательно проверенным, безопасным, но и разрешенным белым списком, он также гарантирует, что ваши документы соответствуют стандартам, что только достижимо с полным знанием спецификаций W3C.
Для тех из вас, кто предлагает просто использовать strip_tags ... помните: strip_tags НЕ будет вырезать атрибуты тегов, а сломанные теги также испортят его.
Из руководства page:
Предупреждение. Поскольку strip_tags () фактически не проверяет HTML, частичные или сломанные теги, это может привести к удалению большего количества текста / данных, чем ожидалось.
Warning Эта функция не изменяет никаких атрибутов в тегах, которые вы разрешаете использовать allowable_tags, включая атрибуты стиля и onmouseover, которые может оскорбительный пользователь может злоупотреблять при публикации текста, который будет показан другим пользователям.
Вы НЕ МОЖЕТЕ полагаться только на это решение.
Возможно, более безопасно использовать DOMDocument для его правильного анализа, удалить запрещенные теги с помощью removeChild (), а затем получить результат. Не всегда безопасно фильтровать материал с помощью регулярных выражений, особенно если вещи начинают приобретать такую сложность. Хакеры могут найти способ обмануть ваши фильтры, форумы и социальные сети. Это хорошо известно.
Например, браузеры игнорируют пробелы после & lt ;. Ваш фильтр регулярного выражения & lt; script, но если я использую & lt; скрипт ... большой FAIL!
Это довольно простая цель - фактически вам нужно проверить что-либо, что НЕ является тегом из списка белых списков и удалять их из источника. Это можно сделать довольно просто с одним регулярным выражением.
function sanitize($html) {
$whitelist = array(
'b', 'i', 'u', 'strong', 'em', 'a'
);
return preg_replace("/<(^".implode("|", $whitelist).")(.*)>(.*)<\/(^".implode("|", $whitelist).")>/", "", $html);
}
Я не тестировал это, и там, вероятно, есть ошибка где-то, но вы получаете суть того, как это работает. Вы также можете посмотреть на язык форматирования, такой как Textile или Markdown.
Jamie
Вы можете просто использовать функцию strip_tags ()
Поскольку функция определена как
string strip_tags ( string $str [, string $allowable_tags ] )
Вы можете сделать это:
$html = $_POST['content'];
$html = strip_tags($html, '<b><a><i><u><span>');
Но обратите внимание, что с помощью strip_tags вы не сможете отфильтровать атрибуты. например,
<a href="javascript:alert('haha caught cha!');">link</a>
HTML очиститель - лучший анализатор / очиститель HTML.
Попробуйте эту функцию «getCleanHTML» ниже, извлеките текстовое содержимое из элементов с исключениями элементов с именем тега в белом списке. Этот код чист и понятен и отлажен.
<?php
$TagWhiteList = array(
'b', 'i', 'u', 'strong', 'em', 'a', 'img'
);
function getHTMLCode($Node) {
$Document = new DOMDocument();
$Document->appendChild($Document->importNode($Node, true));
return $Document->saveHTML();
}
function getCleanHTML($Node, $Text = "") {
global $TagWhiteList;
$TextName = $Node->tagName;
if ($TextName == null)
return $Text.$Node->textContent;
if (in_array($TextName, $TagWhiteList))
return $Text.getHTMLCode($Node);
$Node = $Node->firstChild;
if ($Node != null)
$Text = getCleanHTML($Node, $Text);
while($Node->nextSibling != null) {
$Text = getCleanHTML($Node->nextSibling, $Text);
$Node = $Node->nextSibling;
}
return $Text;
}
$Doc = new DOMDocument();
$Doc->loadHTMLFile("Test.html");
echo getCleanHTML($Doc->documentElement)."\n";
?>
Надеюсь, это поможет.