나는이 것을 이해할 수 없다는 이유로 매우 어리 석다.하지만 나는 그 사실을 파악할 수 없다. 정규식 문자열을 패턴으로 대체해야하지만, 두 가지 예제를 통해 찾았지만 정직하게도 그 어느 때보 다 혼란 스러웠습니다.정규식 패턴을 정규식 패턴으로 대체하는 방법은 무엇입니까?
이 내 현재 시도 :
$string = '26 14:46:54",,"2011-08-26 14:47:02",8,0,"BUSY","DOCUMENTATION","1314370014.18","","","61399130249","7466455647","from-internal","""Oh Snap"" <61399130249>","SIP/1037-00000014","SIP/CL-00000015","Dial","SIP/CL/61436523277,45","2011-08-26 14:47:06","2011-08-26 14:47:15","2011-08-26 ';
$pattern = '["SIP/CL/\d*?,\d*?",]';
$replacement = '"SIP/CL/\1|\2",';
$string = preg_replace($pattern, $replacement, $string);
print($string);
하지만 그건 그냥 공백으로 \1
및 \2
을 대체합니다. 그래서 분명히 나는 전체 개념을 얻지 못하고있다.
는 내가 말하고자하고있어 변경하는 것입니다 :
잘못 포맷 된 CSV에서 쉼표 내 다른 스크립트의 일부를 슬로우this: "SIP/CL/61436523277,45"
to: "SIP/CL/61436523277|45"
.
그것이 따옴표 사이에 같이 ... 당신은 사용합니까, 제대로 포맷하지 않는 것 ['fgetcsv'] (http://www.php.net/fgetcsv) 이거 당신 아닌가요? 또는 문자열 인 경우 ['str_getcsv'] (http://www.php.net/str_getcsv). – Wrikken
나는 아니었지만 나는 지금이다. 어쨌든이 정규식 대체 양식을 배울 필요했습니다. 한 돌로 두 마리의 새가 죽었다. :). 나는 fgetcsv에 대해 알고 있었지만, 내 목적에 부합하지 않았다. (1.8GB + csv ...., mem에 모든 것을로드 할 수 없다.)하지만 str_getcsv는 잘 작동했다. :) – Mattisdada
나중에 참조 용으로 :'fgetcsv'는 전체 파일을 메모리로 읽어 들이지 않고 줄 단위로 읽습니다;) – Wrikken