SQL Server에서 파이프 쉼표로 구분 된 덤프 파일을 가지고 있으며이를 MySQL로 가져 오려고합니다. 줄은 \r\n
으로 구분되며 해당 순서는 일부 필드에서도 발생합니다! 그래서 정규식을 사용하여 실제 줄을 찾고 INSERT
진술을 만들고 싶습니다.preg_split을 사용하여 캡쳐 구분 기호를
그러나 일치 문자열에 구분 기호를 포함하는 데 문제가 있습니다. 내가 PREG_SPLIT_DELIM_CAPTURE
트릭을 할 것이라고 생각하지만 분명히 내가 뭔가 잘못하고 있어요. 나의 구분이없는
$ cat test.php
<?
$string = ' 897|a|Hello\r\n 583|b|Line\r\nBreak\r\n 332|c|Yet\r\nMore\r\nLine\r\nBreaks\r\n';
$lines = preg_split('/ \d{3}\|/', $string, NULL, PREG_SPLIT_DELIM_CAPTURE);
print_r($lines);
$ php test.php
Array
(
[0] =>
[1] => a|Hello\r\n
[2] => b|Line\r\nBreak\r\n
[3] => c|Yet\r\nMore\r\nLine\r\nBreaks\r\n
)
: 내 구분은 실제로 내가 행에 필요한 ID입니다 세 개의 숫자, 다음 세 가지 공간입니다.
$ php -v
PHP 5.3.3-7+squeeze1 with Suhosin-Patch (cli) (built: Mar 18 2011 17:22:52)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
내가 뭘 잘못하고 있고, 내가 원하는 것을 어떻게 얻을 수 있습니까?
나는 것을 읽을 수 있었다,하지만 의미 괄호로 이해하지 않았다, 그것 지금은 상당히 분명하지만, : P – user151841
OK, 그것은 나에게 구분 기호가 하나 개의 요소 인 배열을 제공합니다 그리고 그 다음에 샤드가 ... 같은 요소의 일부로 그들을 가져갈 수있는 방법이 있습니까? 주장 같은 것이 있습니까? – user151841
아니요,'preg_split'은 오직 그것들을 분리 해줍니다. 원하는 경우 preg_match_all 패턴을 만들어야합니다. – mario