php
  • str-replace
  • 2017-02-05 1 views 2 likes 
    2

    나는 몇 가지 감정 표현과 포럼 사이트를 운영하지 않습니다 하나의 코드 ;)입니다 이상한 아무것도) "을 사용할 때 구문 분석을 보여주는, 내가 명령을 사용,...) 감정을 겉으로 나타내 다

    $text = str_ireplace(array(";)", ";-)", "^wink^"), "<img src='/images/emotes/wink.png' style='height: 30px;width:30px; vertical-align:text-top;'>", $text); 
    

    (미안 해요, 내가 입력 한 경우 . 뭔가 잘못 난

    모든 것이 잘 작동) 지금 붙여 넣기를 복사 할 수 없습니다,하지만 난 예제 코드를 제공하려고 할 때 :

    function("mind"); 
    

    을 나는 대가로이있어 :

    기능 ("마음"이미지);

    왜 그런지 궁금합니다. 나 또한 다른 웹 페이지 (mrush.net)에서 보았습니다. ")을 입력했지만 ) 만 입력하면됩니다. 따옴표는 그대로 유지됩니다.

    이에 대한 설명이 있습니까?

    +0

    이 사이트의 관습은 질문과 답변을 엄격하게 분리하여 보관하는 것입니다. te; 해결책을 포함하도록 질문을 편집하는 것이 아니라 [자신의 질문에 대답하는 것이 좋습니다] (http://stackoverflow.com/help/self-answer)입니다. – IMSoP

    답변

    4

    문제는 이미 htmlspecialchars 또는 이와 유사한 것으로 이스케이프 처리 한 HTML 문자열 내부를 바꾸는 것이므로 따옴표를 &quot;으로 이스케이프 처리합니다. 그래서 순서는 다음과 같습니다

    1. 사용자 유형 ") 이스케이프 기능이
    2. &quot;)로 대체가 ;) 출력 &quot<img...>
    3. 브라우저가 &quot를보고 당신이 &quot;을 의미 가정을보고 탈출
    4. , 따옴표와 이미지를 표시합니다.

    이것은 까다 롭습니다. HTML 이스 케이 핑 전에 적용 할 수 없습니다. 이미지의 실제 HTML을 삽입하려는 것이기 때문입니다.

    1. <img...>
    2. ^wink^
    3. 탈출 HTML
    4. 대체 ^wink^으로 ;)의 인스턴스를 대체 :

      한 가지 방법은 예를 들어, 당신의 긴 형식 ^wink^ 모호 자리 표시자를 사용하는 것

    +1

    @Soaku';'는'htmlspecialchars' 또는'htmlentities'에 의해';'로 변환되지 않습니다. 그래서 당신의 솔루션이 어떻게 작동하는지 명확하게 알 수는 없습니다; 가능한 다양한 입력을 다루기 위해 몇 가지 테스트 케이스를 작성해야합니다. 문제를 확인하는 데 도움이 되었기 때문에 기쁩니다. – IMSoP

    +0

    더 까다 롭습니다.^wink ^를 대체 할 때 어떻게 대체합니까?) – Soaku

    +0

    @Soaku HTML을 아직 이스케이프 처리하지 않은 경우에는 처리되지 않습니다. 처리 순서는 다음과 같습니다. 여기 열쇠 야. – IMSoP

    관련 문제