2013-02-13 9 views
0

사용자에게 주어진 텍스트를 렌더링 한 후에 • 대신 ?으로 표시되기 때문에 텍스트 필드에 제공된 글 머리 기호를 잡아 다른 텍스트로 바꾸려고합니다. 나는 이렇게 테스트했습니다 : 글 머리 기호로 단어를 쓴 텍스트를 텍스트 필드에 복사하여 붙여 넣었습니다.간단한 글 머리 기호 문제

$test = strstr($input,'•'); 
if($test){ echo "bullet point found!"; 
} 

하지만 작동 여부를 잡기, 또는 • 총알 포인트를 잡을 수있는 잘못된 정규 표현식입니다되지 않습니다

내 비전이 있습니다.

+3

대신 기본 문제를 해결해야합니다. 글 머리 기호에 국한되지 않는 인코딩 문제가 발생할 가능성이 있습니다. –

+0

나는 utf-8로 페이지를 서비스하고있다. – doniyor

답변

1

strstr•을 지정하면 이전 문자가 네이티브 문자이고 후자가 HTML 엔터티이기 때문에 을 잡을 것 같지 않습니다.

중요하지 않지만 기본 문제를 해결해야합니다.

글 머리 기호에 국한되지 않는 인코딩 문제가있을 수 있습니다. 문자는 UTF-8이 아닌 문자를 UTF-8 출력으로 보내는 것을 의미합니다. 이것에 대한

이유가 될 수있다 :

  • 잘못된 인코딩에 저장됩니다 (문자가 저장되어있는) 소스 파일, 예를 들어, 윈도우 1252 대신 UTF-8의

  • 연결 인코딩 (테이블이 UTF-8에도 불구하고)

  • latin1를 사용하는 데이터베이스 연결 (이하 "다른 이름으로 저장 ..."당신의 IDE의 대화를 확인)

살펴볼 항목의 전체 목록은 UTF-8 all the way through을 참조하십시오.

+0

감사합니다. 나는 이것을 시도 할 것이다. – doniyor

0

• 대신 •을 시도하십시오.

Special Characters in HTML.

그것은 HTML이 & 황소 전달되지 않은 가능성이 높습니다를 참조하지만, HTML의 equivilent.

그래도 발견되지 않으면 HTMLEntities()을 확인하십시오. 실제로 글 머리 기호를 다룰 생각이 아니라면 실제로 갈 수있는 더 좋은 방법이 될 수 있습니다.

편집 : 디코드를 htmlentities와 사용자에게 html_entity_decode()와 HTML, 다시 인코딩().

+0

왜 HTML 엔티티를 사용 하는가? –

+0

그가하려고하는 일에 관해서는 결코 정확히 지정되지 않았기 때문에; PHP가 반드시 HTML과 동일한 특수 문자 코드를 사용하지 않는다는 것을 이해하고 있습니다. HTML 텍스트에서 PHP 코드를 찾는 것이 효과가 없을 수 있습니다. 이러한 함수는 PHP 문자열을 조작 할 수 있도록 변환하는 데 도움이됩니다. 모든 UTF-8 인코딩이 항상 옵션이 아닐 수도 있습니다. – StuckAtWork

0

먼저 입력을 확인하기 전에 모든 문자를 해당 HTML에 상응하는 코드로 인코딩해야합니다 (•). 이 같은 : 당신이 htmlentities를 사용하여 입력을 인코딩 할 경우 저장 더 이상 UTF-8 처리 할 필요가 없습니다으로

$test = strstr(htmlentities($input), '•'); 

if($test) { 
    echo "bullet point found!"; 
} 

그러나, 모든 UTF-8 문자가, 나중에 사용자에게 잘 표현해야한다, 따라서 인공물을 제거합니다.

또한 데이터베이스에 저장할 때 사용자 입력을 이스케이프 처리해야하며 PDO에 표시된 것과 동일한 바인딩 된 매개 변수를 사용하는 것이 좋습니다.

관련 문제