Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Вырезка и замена до первого определенного тега [2]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): « 1 [2]   

> Без описания
EuGen Администратор
Отправлено: 02 Октября, 2009 - 16:30:15
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




А я думал, что акцент на последний параметр я сделал.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Champion Супермодератор
Отправлено: 02 Октября, 2009 - 16:36:56
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




А, да.
 
 Top
Ch_chov
Отправлено: 02 Октября, 2009 - 16:42:47
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




Цитата:
А я думал, что акцент на последний параметр я сделал.

int &count ?

Покажи на примере как с помощью str_replace можно из этой строки
CODE (text):
скопировать код в буфер обмена
  1. $s = "текст текст текст текст<br>
  2.  текст текст текст текст текст текст<br>
  3. и так далее..."


сделать такую

CODE (text):
скопировать код в буфер обмена
  1. $s = "текст текст текст текст<br>
  2.  текст текст текст текст текст текст<p>
  3. и так далее..."
 
 Top
will123
Отправлено: 02 Октября, 2009 - 19:43:49
Post Id



Новичок


Покинул форум
Сообщений всего: 28
Дата рег-ции: Авг. 2009  


Помог: 0 раз(а)




EuGen ну да, серьезно как сделать с помощью str_replace()? а то ты написал
Цитата:
По-моему, я все ясно выразил в 1-м посте.
и вогнал меня в ступор, ведь
Цитата:
Эта функция возвращает строку или массив subject, в котором все вхождения search заменены на replace.

(Добавление)
Ch_chov а зачем мы записываем /<br>/ а не <br>
 
 Top
Champion Супермодератор
Отправлено: 02 Октября, 2009 - 19:49:34
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Цитата:
зачем мы записываем /<br>/ а не <br>

will123 Это длинная история. Он тебе ссылку об этом оставил. Есть такая штука как регулярные выражения. И у них есть ограничители. Вот это они и есть.
(Добавление)
Можно еще сделать с помощью strpos+substr_replace.
 
 Top
will123
Отправлено: 02 Октября, 2009 - 19:57:08
Post Id



Новичок


Покинул форум
Сообщений всего: 28
Дата рег-ции: Авг. 2009  


Помог: 0 раз(а)




Цитата:
Можно еще сделать с помощью strpos+substr_replace.
постами выше пробывал, но как надо не работала

(Отредактировано автором: 02 Октября, 2009 - 19:57:31)

 
 Top
Champion Супермодератор
Отправлено: 02 Октября, 2009 - 20:25:42
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




там есть 4й параметр - длина, на которой происходит замена. По умолчанию заменяется с текущей указанной позиции до конца строки. Укажи длину строки "<br>" там и всё получится
 
 Top
EuGen Администратор
Отправлено: 02 Октября, 2009 - 20:39:44
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Думаю. Подключил алгебру групп даже. Интересно даже стало, можно ли только с помощью str_replace.

Насчет четвертого параметра - я действительно спутал это с preg_replace, На чем и был пойман.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
will123
Отправлено: 03 Октября, 2009 - 08:36:18
Post Id



Новичок


Покинул форум
Сообщений всего: 28
Дата рег-ции: Авг. 2009  


Помог: 0 раз(а)




Champion а по скорости работы, что быстрее будет, preg_replace или strpos+substr_replace?
 
 Top
Champion Супермодератор
Отправлено: 03 Октября, 2009 - 08:58:45
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




PHP:
скопировать код в буфер обмена
  1. $t = microtime();
  2. for ($i = 0; $i < 1000; $i++) {
  3.         $line = "qdqwqwrcsdfd !dd!  dfghsdfghhjg sdfjkhg lgksjdhfks !dd! dfhhhjlkdfgh kjhgklhlksdfjghkl dfghlskh klf gjlsdkhjlfkghl sfsflh dfhfk";
  4.         $res = preg_replace('/!dd!/', '!u!', $line, 1);
  5. }
  6. echo microtime() - $t , '<br>';
  7.  
  8. $t = microtime();
  9. for ($i = 0; $i < 1000; $i++) {
  10.         $line = "qdqwqwrcsdfd !dd!  dfghsdfghhjg sdfjkhg lgksjdhfks !dd! dfhhhjlkdfgh kjhgklhlksdfjghkl dfghlskh klf gjlsdkhjlfkghl sfsflh dfhfk";
  11.         $res = substr_replace($line, '!u!', strpos($line, '!dd!'), 4);
  12. }
  13. echo microtime() - $t , '<br>';
  14. ?>

Результат:
0.003392
0.002117
 
 Top
Ch_chov
Отправлено: 03 Октября, 2009 - 11:23:36
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




У меня результат
0.019914
0.031155

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

Кстати, вместо microtime() здесь лучше использовать microtime(1) что бы не получить неожиданных результатов Улыбка

P.S. Champion ты на каком компе это тестировал?

(Отредактировано автором: 03 Октября, 2009 - 11:23:53)

 
 Top
Champion Супермодератор
Отправлено: 03 Октября, 2009 - 11:59:56
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Ch_chov пишет:
P.S. Champion ты на каком компе это тестировал?

AMD Athlon 64, 2400 MHz (12 x 200) 3800+
1 Гб ОЗУ
Версия ОС 5.1.2600 (WinXP Retail)
 
 Top
Ch_chov
Отправлено: 03 Октября, 2009 - 12:05:50
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




Интересно, почему у тебя этот тест проходит в 10 раз быстрее?
Intel Core(TM) 2 CPU 6300 1.86ГГц 3,00ГБ ОЗУ WinXp SP3
(Добавление)
Кажется понял )
Отключил xdebug

Результат
0.002999
0.001893
 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB