$str =
preg_replace('#([\x00-\x1F])#e', '"\x" . sprintf("%02x", ord("\1"))', $str);
0
A
답변
2
문자의 모든 어커런스를 0에서 31 사이의 숫자 (대개 제어 문자 및 실제 공백 문자를 제외한 간격)와 숫자 값으로 바꿉니다. regex의 끝에있는 e는 '마치 PHP 코드 인 것처럼 패턴을 평가'한다는 것을 의미하며 preg_replace 내부에서 문자열 연결과 sprintf 사용을 허용합니다. regex는 더 일반적인/대신에 #로 구분됩니다.이 경우 아무 이유없이 (정규 표현식 문자열에 /가 포함되어 있으면 이스케이프를 피할 수 있습니다.) 예를 들어
:
<?php
$str = "\t 22 \n ducks";
$str = preg_replace('#([\x00-\x1F])#e', '"\x" . sprintf("%02x", ord("\1"))', $str);
echo $str;
?>
출력 :
\x09 22 \x0a ducks
패턴에서
e
을 가지고, 당신이 얻을 적어도 여기
"\x" . sprintf("%02x", ord(" ")) 22 "\x" . sprintf("%02x", ord(" ")) ducks
.
1
업데이트 :
내가 가까이 그것을보고하고 그것이 \x
접두어로 자신의 헥사 값에 1-31 범위의 모든 아스키 문자로 변환처럼 보이는. 내가 결정했습니다
내 원래 장내 반응 추측은 잘못된 것입니다 : 그것은에는 urlencoding처럼
보인다. 아마도 php urlencode 함수 대신에 내장 함수를 사용할 것입니다.
+1
0에서 31, 1이 아닙니다. –
관련 문제
- 1. 이 정규식은 무엇을합니까?
- 2. 이 정규식은 무엇을합니까?
- 3. 이 간단한 PHP 코드는 무엇을합니까?
- 4. 이 PHP 코드는 정확히 무엇을합니까?
- 5. 이 정규식은 무엇을 의미합니까?
- 6. 이 perl 정규식은 무엇입니까?
- 7. 이 거대한 정규식은 어떻게 작동합니까?
- 8. 이 정규식은 멀티 바이트로 안전할까요?
- 9. 이 정규식은 무엇이 잘못 되었나요?
- 10. @이 PHP에서 무엇을합니까?
- 11. 이 Javascript 라인은 무엇을합니까?
- 12. 이 클로저 코드는 무엇을합니까?
- 13. 이 코드는 무엇을합니까
- 14. 이 루비는 무엇을합니까?
- 15. % {}이 (가) Ruby에서 무엇을합니까?
- 16. 이 자바 스크립트는 무엇을합니까?
- 17. 이 javascript는 무엇을합니까
- 18. 이 C++ 매크로는 무엇을합니까?
- 19. 이 요소는 무엇을합니까?
- 20. 이 코드는 Groovy에서 무엇을합니까?
- 21. 이 자바 라인은 무엇을합니까?
- 22. 이 JS 구문은 무엇을합니까?
- 23. 이 코드는 무엇을합니까?
- 24. 이 스크립트는 무엇을합니까?
- 25. 이 CSS 선택기는 무엇을합니까?
- 26. 이 코드 줄은 무엇을합니까?
- 27. 이 C++ 구문은 무엇을합니까?
- 28. 이 C# 코드는 무엇을합니까?
- 29. 이 라인은 어셈블리에서 무엇을합니까?
- 30. 이 구조체는 실제로 무엇을합니까?
경고 : 제목에 깨진 영어가 포함되어 있습니다. :) 수정하십시오. –