현재 나는 interface.txt 파일에로드 될 .asp 웹 사이트에서 생성 된 텍스트 파일에서 데이터를 추출하려고합니다. 데이터 형식은 다음과 같습니다 (텍스트의 모든 이름이 마스킹 됨) .
801B,SAMPING,VAC,25999,2,R**NA** B**T* A** R*H** ,FEMALE,2017-05-29, ,14:58:01.8000000
820A,SAMPING,VAC,11191,5,M**A*M** H*I**L B** K*M**R*LBA**R*N ,MALE,2017-05-31, ,20:33:19.0300000
505,SELENDANG,OCC,26194,2,I*F** *MR** B** M**D H**A* *AK*R**D** ,MALE,2017-06-01, ,17:49:54.6530000
810,SAMPING,VAC,14251,6,P**I** B**T* S*L**H ,FEMALE,2017-05-29, ,00:10:47.8630000
602B,SUTERA,OCC,26172,2,G**R*E C**E K** Z** ,MALE,2017-06-01, ,15:22:18.9970000
아래 코드를 사용하여 데이터를 추출하려고합니다.
$file = "C:/btemp/bed-interface.txt";
$fileToLoad = fopen($file, "rb");
while(!feof($fileToLoad)){
$data = fgets($fileToLoad);
$extract = array_map('trim', explode(',', $data));
$bnum = trim(preg_replace('[^\s]', '', $extract[0]));
//other array continue here
}
fclose($fileToLoad);
위의 코드는 쉼표를 사용하여 문자열을 분할하지만 각 배열 strlen 반환 을 확인하려고 할 때 잘못된 값을 표시합니다. 예를 들어, $ bnum을 반환 할 때 첫 번째 행 데이터 는 4 대신 strlen of 7 을 표시 합니다. 이것은 다른 데이터로 계속됩니다. 각 리턴 문자의 결과를 보려면 아래 이미지를 참조하십시오. 각 길이는 괄호 안에 있습니다. (텍스트의 모든 이름이 가려졌습니다)
801B (7) SAMPING (13) O 25999 (9) 2 (1) R**NA** B**T* A** R*H** (45) F 2017-05-29 (19) 14:58:01 (15)
820A (7) SAMPING (13) O 11191 (9) 5 (1) M**A*M** H*I**L B** K*M**R*LBA**R*N (69) F 2017-05-31 (19) 20:33:19 (15)
505 (5) SELENDANG (17) O 26194 (9) 2 (1) I*F** *MR** B** M**D H**A* *AK*R**D** (73) F 2017-06-01 (19) 17:49:54 (15)
810 (5) SAMPING (13) O 14251 (9) 6 (1) P**I** B**T* S*L**H (37) F 2017-05-29 (19) 00:10:47 (15)
602B (7) SUTERA (11) O 26172 (9) 2 (1) G**R*E C**E K** Z** (37) F 2017-06-01 (19) 15:22:18 (15)
그래서 이것을 방지하는 방법. 모든 공간을 제거하는 방법. 이미 trim, array_map, preg_replace 사용을 시도했지만 strlen을 사용하여 count 할 때 여전히 공백이 나타납니다 . 심지어 MySQL의 쿼리에 일치 할, 그것은 반환 거짓 원인 의 공간 쿼리 반환 거짓을 만들었다을 .
데이터베이스로 전송 된 값을 조사한 결과 데이터베이스의 모든 문자는 각 값마다 알 수없는 문자가있는 것으로 보입니다.
예를 들어 SAMPING = S □ A □ M □ P □ I □ N □ G □ (알 수없는 문자로 □가 있고 strlen에 의해 14 문자 로 읽음 )
각 배열 검색에 대해 올바른 preg_replace 를 사용하여 :
$bnum = preg_replace('/[^A-Za-z0-9_ -]/','',$extract[0]);
대신 :
$bnum = trim(preg_replace('[^\s]', '', $extract[0]));
배열에서 원치 않는 모든 알 수없는 문자를 제거하고 데이터베이스에 올바른 값을 저장합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다