나는 다음 코드있어하지 :정규 표현식 온라인 테스트 도구에서 작업하지만, 내 응용 프로그램에
이$file = '/mnt/stoneshare/cache/video/10_12_101_38/000/011/M00001.mp4';
preg_match('/[\/\\](\d+_\d+_\d+_\d+)[\/\\]/', $file, $matches);
var_dump($matches);
이
어떤, 분명히, 생산 :
preg_match(): Compilation failed: missing terminating ] for character class at offset 27
을 그러나 온라인 테스트 도구에서 동일한 예제를 실행하면 it works.
무엇이 문제입니까?
예, 작동합니다. 그러나 왜 그런가? 그것은 부정확 해 보입니다. 역 슬래시를 피한 다음 브래킷을 이스케이프 처리하고, IDE에서 이런 식으로 구문 강조 표시를하는 것처럼 말입니다. 그리고 네,이 도구에 대한 온라인 도구 오류가 있습니다. – jolt
@ jolt : 나는이 행동의 진짜 이유를 모른다. 예를 들어'[\/\\\] '가 실수 인 다른 언어에서는 perl과 다릅니다. – Toto
@jolt [here] (http://stackoverflow.com/a/18017821)의 설명 – HamZa