Lexikon
<?php
$arrDump = file('dump.dat');
$arrName = file('name.dat');
$arrUrl = file('url.dat');
$expFile = 'exp_file.txt';
$countName = count($arrName);
for ($i = 0; $i < $countName; $i++)
{
echo $arrName[$i];
foreach ($arrDump as $valueDump)
{
if (strstr($valueDump, $arrName[$i]))
{
$expValue = str_replace($arrName[$i], $arrUrl[$i], $valueDump);
file_put_contents($expFile, $expValue, FILE_APPEND | LOCK_EX);
}
else
{
continue;
}
}
echo "Done!";
?>
Суть в том что есть 3 файла.
dump.dat - тут дамп по типу img|flv|desc|model
name.dat - имена моделей
url.dat - юрл адреса платников моделей
суть скрипта находить имя модели заменять его на юрл, хотел упростить себе работу ибо список большой и вручную это делать долго.
Но чего то я заебся с кодом, скрипт меняет, но только по последнему имяни модели.
Где ошибся немогу понять или что то не вижу. пробовал вместо цикла FOR использовать foreach , это в самом начале, думал там какие то недопонимания но нет, всё так же
Подскажите пожалуйста.
Yabuti
создаем большой массив, где индексы - имена моделей, а значения - урлы, вида: "Sasha Gray"=>"http://google.com/"
считываем файл dump.dat в массив
берем i-й элемент, explod'им по разделителю "|" в 4 переменные
циклом прогоняем сравнение всех элементов первого массива с текущим значением 4-й переменной (имя модели)
если совпало - перезаписываем переменную значением из первого массива (модель=>урл)
склеиваем точкой все вновь $a."|".$b."|".$c."|".$d
присваиваем текущей переменной массива из файла dump.dat
повторяем count($dumpdatarr) раз
Я бы сделал так
-----
Если не получится - напиши, повторяются ли имена моделей и образцы данных, как в дата-файлах, сделаю скрипт.
-----
А вообще все это можно сортировками в Excele за 20 минут сделать:
первый файл в 4 столбца раскидать (| менять на табуляцию, затем в Эксель),
упорядочить по столбику моделей,
правее вставить столбцы из остальных файлов, тоже упорядочить эти два столбца по именам моделей - имена из первого файла (упорядоченные) окажутся напротив имен из второго файла, связанных с третьим файлом
переносим столбцы справа влево с наложением - чтобы остался один столбец моделей и все обратно в текстовый файл
меняем знак табуляции на | - и готово
Yacc
Код:
$dump = array( '|||a', '|||b', '|||c', );
$names = array( 'a', 'b', 'c' );
$urls = array( '1', '2', '3' );
$x = count( $names );
$y = count( $dump );
$z = 3;
if( $x == count( $urls ) )
for( $i = 0; $i < $x; $i += 1 )
for( $j = 0; $j < $y; $j += 1 ) {
$n = explode( '|', $dump[ $j ] );
if( isset( $n[ $z ] ) and $n[ $z ] == $names[ $i ] ) {
$n[ $z ] = $urls[ $i ];
$dump[ $j ] = implode( '|', $n );
}
}
var_dump( $dump );