WapStyle » 2010.12.25 17:50

Есть файл например 123.txt

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

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

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

Например нужно по зпросу "текст_2" вывело всю строку "текст|::|текст_2|::|"

DarkDaNTe » 2010.12.25 19:04

preg_match

WapStyle » 2010.12.27 00:06

хм. непонял.

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

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

Код:

1
a:2:{s:6:"search";s:3:"123";s:5:"count";s:5:"13299";}

"search" - может быть что угодно (я имею ввиду слово, цифры и т.д.)
"count" - только число

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

Надо найти строку по слову в "search" и зменить цыфры в "count" если они изменились скриптом больше делать не чего ненадо.

ByVlad » 2010.12.27 00:16

WapStyle написал:

Код:

1
a:2:{s:6:"search";s:3:"123";s:5:"count";s:5:"13299";}

На JSON похоже.

WapStyle » 2010.12.27 00:19

в serialize(); из unserialize(); так думаю понятно?

Gemorroj » 2010.12.27 00:55

ну что-то типа

Код:

1
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);
TLENS » 2010.12.27 19:30

Ну цыклом можна

Код:

1
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 секунду:
Ну или так

Код:

1
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:40

или регуляркой
/^(.*?:search.*?)#/

Gemorroj » 2010.12.27 19:44

TLENS, на*уй тут регулярка, если это сериализация?

TLENS » 2010.12.27 20:05

Чего?
Добавлено спустя   3 минуты  26 секунд:

Gemorroj написал:

TLENS, на*уй тут регулярка, если это сериализация?

Я просто не дочитал его вопрос я подумал что ему надо только прчитать

2010 » 2010.12.27 23:13

В место count лучше пишите sizeof. Она работает быстрее чем count.

TLENS » 2010.12.28 01:56

2010 написал:

В место count лучше пишите sizeof. Она работает быстрее чем count.

На сколько на 0,00000000000000000000000000001 сек.?

TLENS » 2010.12.28 02:16

Не знаю кто тибе такую басню розказал но вот результат

Код:

1
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 сек.

Gemorroj » 2010.12.28 02:41

это плохой тест, слишком много возможно погрешностей. а вообще да, sizeof считался быстрее, по крайней мере на php4

2010 » 2010.12.28 03:38

TLENS, да ну, басню?

Может мне ещё расскажешь что такой код:
$abc = "$a <br /> $b ";
- работает быстрей чем этот?:
$a00 = $a.'<br />'.$b;

Разнеца не большая, но правильная.
Тот кто знает, без сомнения скажет, это правильно.
То что ты там посчитал - это фигня. попробуй посчитать
for (a = 0; a < sizeof(переменная-массив); а++)
только ''а'' - сопеши как скалярную переменную ''$а'' и тести.

TLENS » 2010.12.28 13:41

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' был быстрее

TLENS » 2010.12.28 13:53

Но всеравно пишу $a=1; Так удобней

TLENS » 2010.12.28 16:51

2010

Кстати нащет етого я знаю, но спасибо что на помнил.