- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
function SplitStr($V){
$ab=explode(' ',$V);
$V='';
foreach($ab as $a){
$a=substr($a,0,50).' '.substr($a,50,50).' '.substr($a,100,50).' '.substr($a,150,50).' '.substr($a,200,50).' '.substr($a,250,50).' '.substr($a,300,50).' '.substr($a,350,50);
$V.=$a.' ';
}
while(strpos($V, " ")){
$V = str_replace(" ", " ", $V);
}
return $V;
}
scalar4eblo4no 11.08.2010 13:23 # 0
$V = str_replace(" ", " ", $V);
}
Удивительно что автор в данном куске не реализовал заново strpos и str_replace =)
Было бы крутое месиво из циклов.
3.14159265 11.08.2010 13:58 # 0
строка 5 - заменяется обычным фором, например
это ИМХО нормальный код - и тому есть причины
while(strpos($V, " ")){
$V = str_replace(" ", " ", $V);
}
mihaild 11.08.2010 14:01 # 0
3.14159265 11.08.2010 14:15 # 0
1. скорость ниже
2. неочевидны с первого взгяда
Вывод: там где можно просто обойтись без регулярки - лучше так и сделать.
>>>чудовищное использование
постились на данном ресурсе коды одного автора, который все делал через регэкспы 0_o. я имел ввиду их.
Анонимус 11.08.2010 14:19 # 0
Вы когда нибудь видели PHP приложение, которое тормозит изза регулярок?
>>2. неочевидны с первого взгяда
Кому как. Тем, кто читал "mastering regular expressions" -- все совершенно очевидно.
3.14159265 11.08.2010 14:34 # 0
тут важно не что где тормозит, а вопрос скорости
Что быстрей регулярки или строковые функции?
Вот например когда регэксп компилированый, то он может оказатся быстрее.
Анонимус 11.08.2010 14:56 # 0
Но простота кода , легкость написания и маленький размер программы чаще важнее..
Мне трудно представить себе задачу на php, где скорость регулярки была бы узким местом.
Узкое место это такое место, которое занимает более 20% времени выполнения.
Оптимизировать нужно только это место.
Иными словами -- нельзя говорить что что-то тормозит, если оно занимает например 2% времени выполнения.
3.14159265 11.08.2010 15:16 # 0
Я говорю о том, что в простых случаях, без регэкспов можно обойтись.
>>>Но простота кода , легкость написания
занчит такое крайне трудно и весьма непросто написать ))
for(i=0;i<351;i+=50)
$b.=substr($a,i,50).' '
и спрашиваю - "Что быстрей регэкс или строковые функции?" возможно их использование в таких случаях имеет смысл
Анонимус 11.08.2010 15:17 # 0
mihaild 11.08.2010 15:28 # 0
Во-вторых, мне кажется, что регэксп проще чем explode с последующим циклом.
3.14159265 11.08.2010 15:41 # 0
0_о - цикл сложен в написании?
preg_replace("/(\S{{$len}})/", "\${1} ",$string);
for(i=0;i<351;i+=len)$b.=substr($a,i,len ).' ';
Кэп подсказывает, что цикл короче
mihaild 11.08.2010 15:44 # 0
Кроме того, кэп подсказывает, что Вы забыли strsplit.
3.14159265 11.08.2010 15:55 # 0
это для наглядности
да забыл. если регэксп быстрее имеет смысл использовать его.
выходит пых имеет настолько говеные строковые ф-ции, что их уделывают регэкспы?
>>>Мне трудно представить себе задачу на php, где скорость регулярки была бы узким местом.>>>Узкое место это такое место, которое занимает более 20% времени выполнения.
рекомендую заглянуть сюда
http://swtch.com/~rsc/regexp/regexp1.html
перед
экспоненциальной сложностью ниче не устоит MWA-HA-HA
3.14159265 11.08.2010 14:19 # 0
или в пыхе регэксп быстрее substr?
mihaild 11.08.2010 14:21 # 0
Возможно, дел в каких-то оптимизациях в PHP.
2. По-моему, гораздо очевидней. Тот, кто пишет на этом языке ИМХО должен знать регэкспы хотя бы на базовом уровне.
3.14159265 11.08.2010 14:31 # 0
Вот чем вам обычный фор не угодил. надо будет поставить вместо 50 - переменную - регулярка засрется еще больше.
а когда понадобится еще что-нить делать в цикле - вы потрете регулярку и напишите фор.
mihaild 11.08.2010 14:33 # 0
preg_replace("/(\S{{$length}})/", "\${1} ", $string); - вот с переменной длиной
Есть, и эта функция - preg_replace :)
Wave 11.08.2010 18:16 # −2
Анонимус 11.08.2010 19:12 # 0
Wave 11.08.2010 20:31 # 0
И как оно может заменить регулярки или включить их для >64k — я что-то не вижу.
Анонимус 11.08.2010 20:38 # 0
http://en.wikipedia.org/wiki/Lexical_analysis
Впринципе, регулярки внутри тоже конечные автоматы.
PHP не лучший язык для написания такого, но тоже можно.
Wave 11.08.2010 21:01 # 0
0. Упирается в регулярные выражения, об ограничениях которых выше.
1. К обсуждаемому вопросу имеет слабое отношение. Примерно такое: теория описывает, что нужно сделать, а спор о регулярках супротив велосипедов — как.
2. Лично мне в простой задаче сделать несколько замен и подсчитать их количество — малость излишня. Я ж не компилятор пишу, а простой плагин разбивки большого текста на страницы.
Анонимус 12.08.2010 00:43 # 0
Вы просили объяснить -- какое отношение конечные автоматы имеют к работе с текстом -- я привел ссылку.
Если Вам надо разбить слова и посчитать их кол-во, то машина может идти по тексту, увеличивая счетчик каждый раз, когда кончается слово, или сохранять это слово в массив, если оно ему нужно итд
Wave 12.08.2010 01:00 # 0
2. Мне сказали о state machine.
3. Я спросил, что это...
И далее по тексту.
Хорошо, я понял, мне подкинули полезную теорию не по теме топика. А минуснули вообще от фонаря.
Анонимус 12.08.2010 01:02 # 0
К сожалению не спасет, да
ZX_Spectrum 12.08.2010 02:57 # 0
может, речь о размере самой регулярки?
sectus 12.08.2010 04:47 # 0