2011-02-11 3 views
1

나는 함수를 작성하여 <title></title> 태그 사이의 웹 페이지에있는 제목 텍스트를 읽습니다. 그래서 나에게 잎php 및 regex를 사용하여 웹 페이지에서 클리닝 텍스트를 긁음

mysql_real_escape_string(rawurldecode($this->title)) 

: 나는 MySQL의 INSERT 문에 대한 값을 인코딩하기 위해 다음과 같은 사용하고

if(preg_match('#<title>([^<]+)</title>#simU', $this->html, $m1)) 
     $this->title = trim($m1[1]); 

: 나는 제목 텍스트는 HTML 페이지를 형성 잡기 위해 다음과 같은 정규식 코드를 사용하고 HTML 엔티티가 제목 (& nsbp 등) 및 목표는 그들이 퍼가기에 가깝게 볼 수 있도록 제목을 청소, 디코딩 제거하는 것입니다 Dating S.o.s | Gluten-free, Dairy-free, Sugar-free Recipes And Lifestyle Tips

뿐만 외국 문자의 전체 데이터베이스와 가능한 한 영어로 말하십시오.

다음 두 정규식을 사용하여 html 엔티티를 제거하고 정크를 제한하는 함수를 생성했습니다. 그리고 이상적이지는 않지만 (html 엔티티를 보존하지 않고 제거하기 때문에) 그것은 내가 가진 것처럼 가장 깨끗합니다.

$string = preg_replace("/&#?[a-z0-9]+;/i","",$string); 
//remove all non-normal chars 
$string = preg_replace('/[^a-zA-Z0-9-\s\'\!\,\|\(\)\.\*\&\#\/\:]/', '', $string); 

하지만 영어 이외의 문자는 여전히 존재합니다.

  • 하는 방법 (... 문장 부호, apostrophies 등) 영어 의도를 보존하기 위해 노력 DB 이러한 제목 문자열을 저장

    1. 가장 좋은 방법 :

      은 누구에게로 도움을 제공 할 수 있을까 위의 예문에 표시된 것처럼 이상한 문자를 변환하거나 제거 하시겠습니까?

    도움을 주셔서 감사합니다.

  • +0

    에 대한 확인, 그것은 당신의 인생을 훨씬 쉽게 http://stackoverflow.com/questions/3577641/best- 것 methods-to-parse-html – RobertPitt

    답변

    1

    포인트 1의 경우 PHP는 html_entity_decode() 기능을 사용하여 HTML 항목을 "일반"문자로 변환 할 수 있습니다.

    +0

    내 프로세스가 주어진다면, 현재 완료된대로 엔티티를 mysql에 저장하고 사용자에게 값을 표시 할 때 디코드를 사용 하시겠습니까? – user603424

    +1

    디코딩 된 텍스트를 항상 표시하려면 데이터베이스에 저장할 때 한 번만 디코딩을 수행하십시오. 그렇게하면 텍스트를 표시 할 때마다'html_entity_decode() '를 호출하는 것을 기억할 필요가 없으므로 약간의 계산 시간이 절약됩니다. – CanSpice

    +0

    아래 나열된 mbstring 함수는 일부 외국 문자를 제거하는 데 매우 유용했지만 여전히 HTML 엔터티에 문제가 있습니다. 예를 들면 다음과 같습니다. $ var = 'Freedom ' 람다 | 웰링턴에서 뉴질랜드 생활을 즐긴다. '; $ var = html_entity_decode ($ var); echo $ var. '
    '; 여전히 괄호 대신 html 코드가 포함 된 문자열을 반환합니다. – user603424

    관련 문제