으로 문자열을 대체 나는이 같은 URL이 3 대신 2 개의 하위 URL이 있지만 작동하지 않습니다. 왜죠?preg_replace이다
0
A
답변
0
표현식이 제대로 인용되지 않은 정규식에서 특별한 의미를 가진 문자가 포함되어 있기 때문에이 제대로 작동하지 않습니다.
$url = 'http://Example.com/'
$pattern = preg_quote($url.'{word}/{word}/{word}', '/');
$pattern = str_replace($pattern, '{word}', '(\w+)');
$pattern = "/$pattern/i";
$replacement = $url.'$2/$3';
$appUrl= preg_replace($pattern, $replacement, $appUrl);
그렇지 않으면 잘못된 것들을 얻기 위해 단순히 너무 쉽게이 같은 preg_quote
를 사용
.
을
Example.com
(으)로 적절히 벗어나지 않기 때문에 현재 잘못된 답변입니다. 예를 들어 문자열과 같이 문자열을 입력하면이 문자열을 직접 테스트 할 수 있습니다.
http://Example!com
, 여기서
!
은 원하는 문자 일 수 있습니다.
또한 큰 따옴표로 묶인 문자열 리터럴에 $2
과 같은 문자열을 사용하고 있습니다. 이는 PHP에서 좋지 않습니다. 왜냐하면 IMHO는 쉽게 옮겨지기 때문입니다. 더 좋게 만드는 것은 단독으로 인용되고 안전합니다.
3
패턴 내에서 슬래시를 이스케이프 처리하거나 다른 패턴 구분 기호를 사용해야합니다.
$pattern = '/http:\/\/Example\.com\/(\w+)\/(\w+)\/(\w+)/i';
$pattern = '#http://Example\.com/(\w+)/(\w+)/(\w+)#i';
0
은 다음과 같이 슬래시 탈출
:
$pattern = '/http:\/\/Example.com\/(\w+)\/(\w+)\/(\w+)/i';
$replacement="http://Example.com/$2/$3";
$appUrl= preg_replace($pattern, $replacement, $appUrl);
관련 문제
- 1. preg_replace이다
- 2. preg_replace이다
- 3. preg_replace이다
- 4. PHP는 preg_replace이다
- 5. preg_replace이다 브래킷 '('
- 6. PHP- preg_replace이다
- 7. preg_replace이다 패턴
- 8. preg_replace이다 문제
- 9. 문장 ereg_replace의 preg_replace이다
- 10. preg_replace이다, 정규식지고 텍스트 부품
- 11. preg_replace이다 알 수없는 수정
- 12. PHP preg_replace이다 변경 문자열
- 13. preg_replace이다 제거 공간이 너무
- 14. 간단한 PHP preg_replace이다 질문
- 15. preg_replace이다 패스 일치
- 16. PHP는 preg_replace이다 질문
- 17. 어떻게 내가 preg_replace이다
- 18. PHP의 preg_replace이다 계산
- 19. preg_replace이다 {다양한 텍스트}
- 20. PHP의 preg_replace이다 개선
- 21. PHP는 preg_replace이다 정규식 내다
- 22. PHP의 preg_replace이다 도움말
- 23. preg_replace이다 이미지 내부 스타일
- 24. PHP의 preg_replace이다 특수 문자
- 25. preg_replace이다 (PHP 함수)
- 26. PHP의 preg_replace이다 앰퍼샌드
- 27. preg_replace이다 & 정규 표현식 도움
- 28. 제가이 링크를 PHP의 preg_replace이다
- 29. 는 값으로, 텍스트 (preg_replace이다)
- 30. preg_replace이다 태그 문제
'http :'다음에'http : \/\ /'와'.com'과 모든'(\ w +)'다음에 슬래시를 피하는 것을 잊지 마시기 바랍니다. – Yaniro