0

페이스 북에 기사를 게시하려면 내 웹 사이트에서 Facebook 공유기 링크를 사용합니다.PHP 이스케이프 따옴표 및 페이스 북 공유자 링크에 대한 urlencode

일부 링크의 경우 작동하지만 다른 링크의 경우 그렇지 않습니다. 링크를 통해 전달되는 제목과 텍스트는 프랑스어로 (많은 인용 부호와 특수 문자가 많이 사용됨) 링크를 처리하는 페이지는 UTF8로되어 있습니다.

콘텐츠를 urlencode하고 링크를 만들기 전에 모든 FB 링크를 작동시키는 데 성공했습니다. 간단히 "mysql_real_escape_string"을 사용했습니다.

왜 "mysql_real_escape_string"인가?

"htmlentities", "htmlspecialchars"및 "addslashes"가 작동하지 않았기 때문에 테스트였습니다. 분명한 단점은 "mysql_real_escape_string"함수는 데이터베이스와 관련이 없으므로 아무 것도하지 않는다는 것입니다. 그리고 실제로이 기능이 "사용자에 대해 거부되었습니다 ..."라는 오류 메시지가 나타납니다.

어쨌든이 기능을 사용하지는 않겠지 만 이상한 점은 "addslashes"는 Facebook 공유자 링크가 100 % 작동한다는 것입니다. addslashes가 "mysql_real_escape_string"의 순수 PHP 버전이라고 생각했지만 다른 점이 있습니다. 그렇지 않으면 똑같이 작동하지만 그렇지 않습니다.

내 문제의 모든 PHP 대체 솔루션을 원하십니까?

답변

1

URL 인코딩은 RFC 1738 표준을 기반으로합니다. 현재 URL 인코딩 표준이로 변경되었습니다. RFC 3986. 원하는 기능은 rawurlencode($string);이거나 직접 함수를 작성하십시오. 바꾸려는 문자는 '!', '*', '' ','(",") "" "" ""@ ""& ""= "" + ","$ ",", ","/ ","? ","% ","# ","[ ","] "

+0

감사합니다. 그래서 나는 모든 것을 제거하고 (addslashes, mysql_real_escape_string, ...), 최종 변환으로 rawurlencode를 유지하지만 작동하지 않습니다. 10 개의 링크에서 1 개만 작동했습니다. – Baylock

+1

추가 슬래시와 rawurlencode를 결합하는 것은 어떻습니까? 그냥 생각. 도움이 될만한 단서가 없습니다. 하지만 페이스 북이 당신이 슬래시를 벗어날 것을 기대한다면 실제로 작동 할 수도 있습니다. –

+0

탱크 마크. 이제 5 개의 링크가 작동하지만 5 개의 링크는 작동하지 않습니다. 정말 이상해. mysql_real_escape_string을 사용하면 10/10가 작동합니다. 그림을 이동... – Baylock