Вы не зашли.
Есть файл например 123.txt
В нём содержится информация в виде
текст|:
текст_2|:
Вопрос как мне нати строку в этом файле если есть только её часть.
Например нужно по зпросу "текст_2" вывело всю строку "текст|:
текст_2|:
"
хм. непонял.
Обьясню ещё раз что именно мне надо
Есть файл например test.dat в нём содержится много строк вида
Код:
a:2:{s:6:"search";s:3:"123";s:5:"count";s:5:"13299";} |
"search" - может быть что угодно (я имею ввиду слово, цифры и т.д.)
"count" - только число
Теперь головняк (для меня)
Надо найти строку по слову в "search" и зменить цыфры в "count" если они изменились скриптом больше делать не чего ненадо.
WapStyle написал:Код:
a:2:{s:6:"search";s:3:"123";s:5:"count";s:5:"13299";} |
На JSON похоже.
в serialize(); из unserialize(); так думаю понятно?
Отредактировано WapStyle (2010.12.27 00:12)
ну что-то типа
Код:
span style="color: #0000BB"><?php$old = fopen('file.txt');$new = fopen('file2.txt');while (($f = fread($old)) !== false) { $data = unserialize($f); // изменяем $data fwrite($new, serialize($data) . PHP_EOL);}fclose($old);fclose($new); |
#7.
TLENS
Off
(14)
Moderator
2010.12.27 19:07
Ну цыклом можна
Код:
lt;?$f=file('test.dat');$c=count($f);$t='';for($i=0; $i<$c; ++$i){ if(substr_count($f[$i],':search:')) { $t=$i; $i=$c; }} |
Добавлено спустя 7 минут 51 секунду: Ну или так
Код:
lt;?$f=file('test.dat');$c=count($f);$t=array();for($i=0; $i<$c; ++$i){ $b=exolode(':',$f[$i]); if($b[1]=='search') { $t=$i; $i=$c; } unset($b);}if(count($t)){ print_r($t);} |
Отредактировано TLENS (2010.12.27 19:07)
#8.
TLENS
Off
(14)
Moderator
2010.12.27 19:07
или регуляркой
/^(.*?:search.*?)#/
TLENS, на*уй тут регулярка, если это сериализация?
#10.
TLENS
Off
(14)
Moderator
2010.12.27 20:08
Чего?
Добавлено спустя 3 минуты 26 секунд: Gemorroj написал:
TLENS, на*уй тут регулярка, если это сериализация?
Я просто не дочитал его вопрос я подумал что ему надо только прчитать
Отредактировано TLENS (2010.12.27 20:08)
#11.
2010
Off
(1)
Участник
2010.12.27 23:11
В место count лучше пишите sizeof. Она работает быстрее чем count.
#12.
TLENS
Off
(14)
Moderator
2010.12.28 01:01
2010 написал:
В место count лучше пишите sizeof. Она работает быстрее чем count.
На сколько на 0,00000000000000000000000000001 сек.?
#13.
TLENS
Off
(14)
Moderator
2010.12.28 02:02
Не знаю кто тибе такую басню розказал но вот результат
Код:
lt;?$a=array();for($i=0; $i<=100000; ++$i){$a[]='';}$starttime = microtime(1);for($i=0; $i<=1000000; ++$i){$f=count($a);}echo 'count<br />'.round(microtime(1) - $starttime,4).' сек.<br />';$starttime = microtime(1);for($i=0; $i<=1000000; ++$i){$f=sizeof($a);}echo '<br />sizeof<br />'.round(microtime(1) - $starttime,4) . ' сек.<br />'; |
count
0.2909 сек.
sizeof
0.3038 сек.
это плохой тест, слишком много возможно погрешностей. а вообще да, sizeof считался быстрее, по крайней мере на php4
#15.
2010
Off
(1)
Участник
2010.12.28 03:03
TLENS, да ну, басню?
Может мне ещё расскажешь что такой код:
$abc = "$a <br /> $b ";
- работает быстрей чем этот?:
$a00 = $a.'<br />'.$b;
Разнеца не большая, но правильная.
Тот кто знает, без сомнения скажет, это правильно.
То что ты там посчитал - это фигня. попробуй посчитать
for (a = 0; a < sizeof(переменная-массив); а++)
только ''а'' - сопеши как скалярную переменную ''$а'' и тести.
#16.
TLENS
Off
(14)
Moderator
2010.12.28 13:01
2010 написал:
TLENS, да ну, басню?
Может мне ещё расскажешь что такой код:
$abc = "$a <br /> $b ";
- работает быстрей чем этот?:
$a00 = $a.'<br />'.$b;
Разнеца не большая, но правильная.
Тот кто знает, без сомнения скажет, это правильно.
То что ты там посчитал - это фигня. попробуй посчитать
for (a = 0; a < sizeof(переменная-массив); а++)
только ''а'' - сопеши как скалярную переменную ''$а'' и тести.
Слушай речь идет за sizeof и count Вопрос причем здесь цыклы и строки?
Добавлено спустя 9 минут 57 секунд: Gemorroj написал:
это плохой тест, слишком много возможно погрешностей. а вообще да, sizeof считался быстрее, по крайней мере на php4
Ты прав. Оно через раз показывает то того больше то того меньше.
Подскажи пример как зделать точный тест кода
Кстати когдато тестировал $a=1; и $a='1'; то '1' был быстрее
#17.
TLENS
Off
(14)
Moderator
2010.12.28 13:01
Но всеравно пишу $a=1; Так удобней
#18.
TLENS
Off
(14)
Moderator
2010.12.28 16:04
2010
Кстати нащет етого я знаю, но спасибо что на помнил.
Отредактировано TLENS (2010.12.28 16:04)