HTML 마크 업이 포함 된 200 자 문자열이 있다고 가정 해보십시오. 나는 처음 50 자의 미리보기를 보여주고 싶다. 태그를 '분리'하지 않아도됩니다. 즉, 단편에는 </b>
이없는 <b>
이 포함되어서는 안됩니다. 모든 서버 측 처리는 PHP에 있어야합니다.태그를 분할하지 않고 HTML 조각을 잘라내는 방법은 무엇입니까?
3
A
답변
3
You should check out Tidy HTML. 처음 50자가 아닌 HTML 문자 뒤에 잘라낸 다음 Tidy를 실행하여 HTML로 수정하십시오.
0
간단한 접근 방식은 strip_tags()
일 수 있으며 발췌 부분을 캡처 할 수 있습니다.
0
짧은 대답 : DOMDocument::loadHTML($string)
으로 DOM으로 변환 한 다음 텍스트 노드의 문자를 계산하는 트리를 걸어보십시오. 한도에 도달하면 해당 노드의 나머지 부분을 '...'또는 빈 문자열로 바꾸고 모든 후속 노드에서 $node->parentNode->removeChild($node)
으로 간단히 전화하십시오.
+0
줄 수 있습니까? 일부 코드 예제 : D –
0
여기에 표준 PHP의 일부입니다있는 DOMDocument를 사용하여 빠르고 신뢰할 수있는 솔루션입니다 :
function cut_html ($html, $limit) {
$dom = new DOMDocument();
$dom->loadHTML(mb_convert_encoding("<div>{$html}</div>", "HTML-ENTITIES", "UTF-8"), LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
cut_html_recursive($dom->documentElement, $limit);
return substr($dom->saveHTML($dom->documentElement), 5, -6);
}
function cut_html_recursive ($element, $limit) {
if($limit > 0) {
if($element->nodeType == 3) {
$limit -= strlen($element->nodeValue);
if($limit < 0) {
$element->nodeValue = substr($element->nodeValue, 0, strlen($element->nodeValue) + $limit);
}
}
else {
for($i = 0; $i < $element->childNodes->length; $i++) {
if($limit > 0) {
$limit = cut_html_recursive($element->childNodes->item($i), $limit);
}
else {
$element->removeChild($element->childNodes->item($i));
$i--;
}
}
}
}
return $limit;
}
관련 문제
- 1. HTML 조각을 DOMDocument로 어셈블하는 방법은 무엇입니까?
- 2. html 태그를 응축하는 방법은 무엇입니까?
- 3. HTML 파일에서 일부 태그를 검색하는 방법은 무엇입니까?
- 4. DisplayTag에 HTML 태그를 추가하는 방법은 무엇입니까?
- 5. PHPQuery로 HTML 태그를 제거하는 방법은 무엇입니까?
- 6. Drupal 6에서 HTML 태그를 수정하는 방법은 무엇입니까?
- 7. HTML 정수기에서 태그를 허용하는 방법은 무엇입니까?
- 8. 일부 HTML 태그를 제거하는 방법은 무엇입니까?
- 9. Joomla 1.5에서 HTML 태그를 수정하는 방법은 무엇입니까?
- 10. URL에서 HTML 태그를 가져 오는 방법은 무엇입니까?
- 11. 업로드하는 동안 이미지를 잘라내는 방법은 무엇입니까?
- 12. 큰 파일을로드하고 작은 파일로 잘라내는 방법은 무엇입니까?
- 13. Java에서 이미지의 일부 영역을 잘라내는 방법은 무엇입니까?
- 14. 선언적 면도기로 HTML 조각을 (대리인으로) 전달하는 방법은 무엇입니까?
- 15. html 태그를 보존하고 바꿉니다.
- 16. Razor Engine에서 분명히 일치하지 않는 HTML 태그를 처리하는 방법은 무엇입니까?
- 17. 배열에서 문자열을 잘라내는 함수는 무엇입니까?
- 18. HTML 텍스트를 태그로 묶지 않고 강조 표시하는 방법은 무엇입니까?
- 19. 태그를 "언랩"하는 방법은 무엇입니까?
- 20. 단어를 분할하지 않고 <string>을 List로 분할하는 방법은 무엇입니까?
- 21. Content-Disposition 태그를 설정하지 않고 컨트롤러에서 이미지를 반환하는 방법은 무엇입니까?
- 22. 태그를 만드는 방법은 무엇입니까?
- 23. sox가 파일을 분할하지 못함
- 24. html 태그를 포함한 내용을 표시하는 방법은?
- 25. Rails에서 동적 조각을 캐시하는 방법은 무엇입니까?
- 26. 검색을 사용하여 웹 조각을 만드는 방법은 무엇입니까?
- 27. 조각을 시작하지 않는 문제를 해결하는 방법은 무엇입니까?
- 28. html 태그를 포함하지 않고 길이 문자열을 검사하는 정규식
- 29. Perl에서 ID를 사용하여 html 태그를 제거하는 방법은 무엇입니까?
- 30. spark viewengine을 사용하여 맞춤 html 태그를 만드는 방법은 무엇입니까?
동의 - 이것은 필자가 항상 할 것입니다. 유일한 단점은 강한, 엠, 등 ..뿐만 아니라 모든 링크에 대한 서식을 잃는 것입니다 -하지만 필자는 항상 그것을 받아 들였고 이동 :-) – prodigitalson
내가 태그를 가지고 싶습니다 ... –