2015-02-17 4 views
1

Используя следующий код:PHP: HTML Tidy ремонт строка: Это не упаковывают все в <html>

$tidy = new tidy(); 
$clean = $tidy->repairString("<p>Hello</p>"); 

Это Заключает строку в целых интригах:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN"> 
<html> 
<head> 
<title></title> 
</head> 
<body> 
<p>Hello</p> 
</body> 
</html> 

Поскольку я использую он в поле «описание», время от времени содержащее некоторые html-теги, я просто хочу использовать его для исправления аномалий в строке, для незакрытых элементов, закрытых, но не открытых и т. д., а не для его блокировки как полный html-документ.

Если строка вообще не содержит какой-либо html, она должна просто вернуть вход. И если он содержит html, как в примере выше, он должен исправить все, что нужно исправить (что в этом примере ничего), а не заключить в полный документ.

Кто-нибудь знает, как сделать HTML-код Tidy не таким, как это?

+0

Per http://php.net/manual/en/tidy.repairstring.php второй параметр принимает массив опций. Я бы попробовал 'array ('doctype' => false, 'output-html' => false)', но почему-то я сомневаюсь, что это сработает. (Извините, не нужно убирать сейчас, чтобы попробовать) – developerwjk

ответ

5

Я боролся с той же проблемой. Но нашел это в аккуратной документации. Если вы добавите «show-body-only» => true, он не покажет полный заголовок html и так далее.

$tidy = new tidy(); 
$input = "<p>A paragraph with <b>bold<b> text"; 
$clean = $tidy->repairString($input,array('show-body-only' => true)); 
echo $clean; 

покажет: <p>A paragraph with <b>bold</b> text</p>

+0

Спасибо, это работает отлично. Чтобы сделать то же самое в процедурном стиле, просто выполните: 'echo tidy_repair_string ($ input, array ('show-body-only' => true)); –