Конвертация базы

12
Dimid
На сайте с 03.12.2006
Offline
74
870

День добрый :)

Подскажите пожалуйста, как можно сконвертировать базу?

База выглядит следующим образом:

('обыкновенный', 24025),

('простой', 24025),

('акклиматизироваться', 24026),

('приспособляться', 24026),

('аккуратный', 24027),

('щепетильный', 24027),

('скрупулезный', 24027),

('аксиома', 24028),

('истина', 24028),

('актер', 24029),

('артист', 24029),

...

Нужно получить:

обыкновенный|простой

акклиматизироваться|приспособляться

аккуратный|щепетильный|скрупулезный

аксиома|истина

актер|артист

...

_savit
На сайте с 19.03.2006
Offline
135
#1

с помощью regexp выдаеляете из каждой строки текст и цифры, создаете массив где ключами являются цифры ... + проверка на существование ключа в массиве и если он есть то добавляете к значению очередной текст

https://vk-botovod.ru - комбайн ВКонтакте, мультимессенджер, эмулятор жизни аккаунтов
A0
На сайте с 22.09.2007
Offline
70
#2

Платно или бесплатно?

С использованием БД или без?

Одноразово или динамически?

Если на первый вопрос ответ "платно" - можно в личку. ) Иначе - просто ответьте на вопросы.

Ins1ght
На сайте с 05.10.2007
Offline
22
#3

Вы хотите как просто скрипт или какую-то программку конвертации ?

Brand from Amber
На сайте с 18.08.2007
Offline
293
#4
Ins1ght:
каким образом вы разделяете 3 слова в строке или 2 ?

Посмотрите внимательно - обязательно поймёте.

Dimid:
Подскажите пожалуйста, как можно сконвертировать базу

Не понял! Судя по Вашему описанию, у Вас имеется SQL-совместимая база в которой есть одна таблица с двумя полями "слово", "id"... где ID - есть идентификатор строки? И нужно поменять формат хранения данных в этой таблице что-бы он подходил под указанный Вами шаблон? ...ДЫК это делается при помощи 2-ух SQL-запросов и пары строк скрипта.

Лучший способ понять что-то самому - объяснить это другому.
Linkpusher
На сайте с 28.12.2007
Offline
176
#5
Brand from Amber:
Посмотрите внимательно - обязательно поймёте.
одна таблица с двумя полями "слово", "id"... где ID - есть идентификатор строки?

круче. к цифрам присмотритесь повнимательней :) у синонимов они совпадают.

Точу ножи. Буквально. Есть отзывы. Заказать заточку в МСК и Подольске можно через Телеграмм.
Ins1ght
На сайте с 05.10.2007
Offline
22
#6
Dimid:
День добрый :)

Подскажите пожалуйста, как можно сконвертировать базу?

База выглядит следующим образом:
('обыкновенный', 24025),
('простой', 24025),
('акклиматизироваться', 24026),
('приспособляться', 24026),
('аккуратный', 24027),
('щепетильный', 24027),
('скрупулезный', 24027),
('аксиома', 24028),
('истина', 24028),
('актер', 24029),
('артист', 24029),
...

Нужно получить:
обыкновенный|простой
акклиматизироваться|приспособляться
аккуратный|щепетильный|скрупулезный
аксиома|истина
актер|артист
...

Вот быстро написал вам

<?php

$txt = file_get_contents('txt.txt');

str_replace("\n", '', $txt);
preg_match_all('(\'(.*)\'\, ([0-9]+))', $txt, $matches);

$output = '';

foreach($matches[2] as $key => $value)
{
if(isset($array[$value]))
{
$array[$value] .= ','.$key;
} else {
$array[$value] = $key;
}
}

foreach($array as $key => $value)
{
$keys = explode(',', $value);
foreach($keys as $number => $value)
{
$output .= $matches[1][$value].'|';
}
$output = substr($output, 0, -1);
$output .= "\n";
}

file_put_contents('output.txt', $output);
?>

txt.txt - ваша база, ответ появится в файле output.txt.

писал быстро по этому код не очень красив, но думаю от него больше и не требуется.

Dimid
На сайте с 03.12.2006
Offline
74
#7

всем спасибо, проблема решена ;) особая благодарность Ins1ght

Dimid
На сайте с 03.12.2006
Offline
74
#8

появилась необходимость сделать замену полученной базы:

с

обыкновенный|простой

акклиматизироваться|приспособляться

аккуратный|щепетильный|скрупулезный

аксиома|истина

актер|артист

...

на

обыкновенный::простой

акклиматизироваться::приспособляться

аккуратный::щепетильный|скрупулезный

аксиома::истина

актер::артист

...

то есть нужно заменить только первый символ(нужный) в строке(в примере это видно)

tommy-gung
На сайте с 22.11.2006
Offline
295
#9

проверяйте


$text = file("filename.txt");
$fo = fopen("newfile.txt", "w");

foreach($text as $val) {
$str = explode("|", $val);
if(sizeof($str) == 2) {
fwrite($fo, implode("::", $str));
continue;
}
$line = str[0]."::".$str[1];
foreach($str as $key=>$sval) {
if($key == 0 or $key == 1) continue;
$line .= "|".$sval;
}
fwrite($fo, $line);
}
fclose($fo);
Здесь не могла быть ваша реклама
Dimid
На сайте с 03.12.2006
Offline
74
#10
tommy-gung:
проверяйте


$text = file("filename.txt");
$fo = fopen("newfile.txt", "w");

foreach($text as $val) {
$str = explode("|", $val);
if(sizeof($str) == 2) {
fwrite($fo, implode("::", $str));
continue;
}
$line = str[0]."::".$str[1];
foreach($str as $key=>$sval) {
if($key == 0 or $key == 1) continue;
$line .= "|".$sval;
}
fwrite($fo, $line);
}
fclose($fo);

что-то не получается

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий