Вы не зашли.
Главная » PHP » Вывод строки из файла
#1. WapStyle Off (3)
Участник
2010.12.25 17:05
Есть файл например 123.txt

В нём содержится информация в виде

текст|:neutralтекст_2|:neutral

Вопрос как мне нати строку в этом файле если есть только её часть.

Например нужно по зпросу "текст_2" вывело всю строку "текст|:neutralтекст_2|:neutral"
#2. DarkDaNTe Off (11)
Участник
2010.12.25 19:07
preg_match
#3. WapStyle Off (3)
Участник
2010.12.27 00:12
хм. непонял.

Обьясню ещё раз что именно мне надо

Есть файл например test.dat в нём содержится много строк вида

Код:
a:2:{s:6:"search";s:3:"123";s:5:"count";s:5:"13299";}
"search" - может быть что угодно (я имею ввиду слово, цифры и т.д.)
"count" - только число

Теперь головняк (для меня)

Надо найти строку по слову в "search" и зменить цыфры в "count" если они изменились скриптом больше делать не чего ненадо.
#4. ByVlad Off (1)
Участник
2010.12.27 00:12
WapStyle написал:
Код:
a:2:{s:6:"search";s:3:"123";s:5:"count";s:5:"13299";}
На JSON похоже.
#5. WapStyle Off (3)
Участник
2010.12.27 00:12
в serialize(); из unserialize(); так думаю понятно?
Отредактировано WapStyle (2010.12.27 00:12)
#6. Gemorroj Off (107)
Administrator
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.*?)#/
#9. Gemorroj Off (107)
Administrator
2010.12.27 19:07
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 сек.
#14. Gemorroj Off (107)
Administrator
2010.12.28 02:02
это плохой тест, слишком много возможно погрешностей. а вообще да, 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)
Страниц: 1 2 Все
Главная
WEB
PunBB Mod v0.6.2
0.026 s