2013-12-20 2 views
1


У меня длинный текстовый файл, этот файл имеет вкладку, но он довольно сложный. Не просто разделены запятыми, есть вкладки, пробелы и другие символы. Но линии стандартно равны.Php MySql RegEx import text

линии Файл

 
3 1 a,A text here refers to name\0 a,A text here refers the description and contains numbers\0 a,none\0 a,none\0 

На линии выше
3 = Id
1 = id2
текстовом здесь относится к имени = нома
Текст здесь относится описание и содержит номера = описание

Мне нужно импортировать эти 4 столбца для db в MySQL.

Спасибо!

+1

Пожалуйста, пересмотреть свой вопрос и дать четкие примеры того, что ваш ожидаемый результат есть. – brandonscript

+0

Проблема решена, спасибо Казимир и Ипполит. Это именно то, что я хотел. Извините за вопрос без кода, я ничего не знаю RegEx. –

ответ

1

Попробуйте открыть в Excel. Если это файл с вкладками или разделенный пробелами, Excel имеет возможность отделять данные по вкладкам и помещать их в столбцы. После того, как все выглядит хорошо в Excel, вы можете экспортировать в CSV или другой для импорта в MySQL.

0

Вы можете попробовать это:

$subject = '3 1 a,A text here refers to name\0 a,A text here refers the description and contains numbers\0 a,none\0 a,none\0 
3 1 a,A text here refers to name\0 a,A text here refers the description and contains numbers\0 a,none\0 a,none\0'; 

preg_match_all('~^(?<id1>\d+)\s+(?<id2>\d+)\s+a, 
       (?<name>(?>[^\\\]++|\\\(?!0))+)\\\0\s*a, 
       (?<description>(?>[^\\\]++|\\\(?!0))+)\\\0~xm', 
    $subject, $matches, PREG_SET_ORDER); 

foreach($matches as $match) { 
    printf("<br/>id1: %s<br/>id2: %s<br/>name: %s<br/>description: %s<br/>", 
     $match['id1'], $match['id2'], $match['name'], $match['description']); 
} 
0

вы можете использовать его при взрыве

// $text = get your text content 

    $lines = explode("\n",$text); // Get the lines 

    for($i = 0; $i< count($lines) ; $i++) 
    { 
     $parts = explode(" ",$lines[$i]) // explode by double spacing 
     $id = $parts[0]; 
     $id2 = $parts[1]; 
     $name = substr($parts[2],2); 
     $description = substr($parts[3],2); 


    // Your insert query 

}