PHP : 트림 된 HTML 마크 업을 표시하는 동안 HTML 마크 업 문제

StackOverflow https://stackoverflow.com/questions/801017

  •  03-07-2019
  •  | 
  •  

문제

RichText Box 컨트롤을 사용하여 한 페이지에 일부 데이터를 게시하고 있습니다. 그리고 HTML 마크 업을 사용하여 DB 테이블에 데이터를 저장하고 있습니다. EX : 이것은 u003Cb >내 대담한u003C/b> 텍스트입니다.

다른 페이지 에이 열의 처음 50자를 표시하고 있습니다. 이제 저장할 때, 굵은 태그가 적용된 문장 (50 숯 이상)을 저장하면 (처음 50 숯을 복용하기 위해) 닫는 b tag ()를 잃어 버릴 것입니다. 대담한 것이 해당 페이지의 내 내용물에 적용되고 있습니다.

이것을 어떻게 해결할 수 있습니까? 어떤 열린 태그가 닫히지 않은지 어떻게 확인할 수 있습니까? PHP 에서이 작업을 수행 할 수있는 방법이 있습니까? 전체 HTML 태그 / 마크 업을 제거하고 문장을 일반 텍스트로 알려주는 기능이 있습니까?

도움이 되었습니까?

해결책

http://php.net/strip_tags

Strip_tags 함수는 가질 수있는 태그를 제거합니다.

다른 팁

$textWithoutTags = strip_tags($html);

나는 일반적으로 사용합니다 html :: 잘립니다 이것을 위해. 물론, PERL 모듈이기 때문에 PHP에서 직접 사용할 수는 없지만 소스 코드는 작동 방식 (HTML 파서를 사용하는 것)을 보여줍니다.

대안적인 접근 방식은 현재하고있는 것처럼 잘린 다음 사용하여 고치는 것입니다. 깔끔한.

HTML 태그가 남아있게하려면 올바르게 닫으려면 PHP : 태그를 무시하고 HTML을 잘라냅니다. 그렇지 않으면 다음을 읽으십시오.

strip_tags HTML 태그를 제거하지만 HTML 엔티티 (예 : &), 이것은 잘린 경우에도 여전히 문제를 일으킬 수 있습니다.

엔티티도 처리하려면 사용할 수 있습니다 html_entity_decode 태그를 벗기고 나서 엔티티를 디코딩하려면 트림을 다듬고 마침내 엔티티를 다시 연결합니다. htmlspecialchars:

$text = "1 < 2\n";
print $text;
print htmlspecialchars(substr(html_entity_decode(strip_tags($text), ENT_QUOTES), 0, 3));

(실제로 변환하기 위해 ENT_QUOTES를 사용하십시오 모두 엔티티.)

결과:

1 < 2
1 <

각주: 위의 것은 ISO-8859-1로 디코딩 할 수있는 엔티티에만 작용합니다. 국제 캐릭터에 대한 지원이 필요한 경우 이미 UTF-8 인코딩 문자열로 작업해야하며 단순히 호출에이를 지정해야합니다. html_entity_decode.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top