2016-06-23 3 views
1

XD의 모든 인스턴스를 XD 스마일리 페이스로 대체하는 대체 코드가 있습니다 ... 링크에 'XD'문자열이 포함되어 있으면 링크가 끊어집니다.str_replace가 공백을 포함하는 경우에만

'XD'처럼 공백이 오는 경우에만 XD를 바꾸기를 원합니다. 작동하지 않는 것 외에는 (& nbsp,/\ s/및  을 시도했습니다. in 'XD & nbsp')

가능성이 너무 높습니다. 뭔가 도움이 될 수는 없지만 (모든 것이 공백을 제거하고 필요하지 않음) 찾을 수 없습니다. 누군가가 나를 도울 수 있기를 바란다.

여기서 참조 용 코드이다 :

function BB_CODE($content) { 
    $content = str_replace("XD", "<img src=\"images/smilies/icon_xd.gif\" alt=\"XD\">", $content); 
} 

콘텐츠는 사용자가 입력된다. 어떤 도움을 주셔서 감사합니다!

답변

1

당신은 %로

$content= str_replace("%XD%", "<img src=\"images/smilies/icon_xd.gif\" alt=\"XD\">", $content); 

EDIT "XD"를 둘러싸고해야 또는 사용 preg_replace이다

preg_replace("/XD/", "<img src=\"images/smilies/icon_xd.gif\" alt=\"XD\">", $content); 
+0

흠, 여전히 코드를 무효화 할 것 ... 링크가 사라지고 텍스트가 'XD'에서 유지 –

+0

preg_replace이다를 사용하여이 하나를 시도 –

0

그래서 당신이 혼자 경우에만 XD를 대체 할을?

preg_replace('/\bXD\b/', '(ಠ‿ಠ)', "Then I was like XD") 

사용 \b는 단어 경계 대신 \s을 감시합니다. 이것은 내 예제에서와 같이 문자열의 시작과 끝에서도 작동한다는 것을 의미합니다. preg_replace()

은 일반적인 두 개는있다 :

  • , 나는 내가 %을 선호하는 대회가 아니라 내 자신의 코드에 여기 /을 사용하는 분리 문자. 정규식은 같은 의미로 '%\bXD\b%'으로 작성할 수 있습니다.
  • 백 슬래시 ()를 이스케이프 처리하면 작은 따옴표로 묶은 문자열을 사용하므로 백 슬래시 (#)를 \b에서 이스케이프 처리 할 필요가 없습니다. 당신이 이중 qoutes를 사용하는 경우, 당신과 같이 그것을 탈출해야 : "/\\bXD\\b/"
+0

흠, 링크가 아직 사라지고 있습니다 ... 링크를 사용하여 테스트하고 있는데, 스마일리, 스마일리가이 인스턴스에 표시됩니다. (예 : "/ XD /", ", 링크는 빈 공간으로 바뀝니다. –

+0

이 코드는 링크를 대체하지 않습니다. 이것은 다른 곳에서 일어나고 있습니다. 당신 포럼의 위생 기능을 점검하십시오. – sba

+0

링크를 교체하려고하지 않습니다. 링크가 'www.XDlalala.com'인 경우 링크가 XD 교체 코드 간섭으로 인해 분리됩니다. –

관련 문제