Требуется заменить сделать ключевые слова типа для облака тегов. Хочется до сохранения привести к нужному формату. Написала вот что.
/**
* Заменить все пробельные символы до и после ","|";" на ","
* И удалить запятые и пробельные символы из начала и конца строки
* @param $s - строка
* @return string
*/
function convKW($s){
$pattern = '/(\s*[,;]\s*)/i';
$s = trim(preg_replace($pattern,',',trim($s)),',');
return str_replace(",",", ",$s);
}
Может кто знает более изящное решение? Поделитесь, пожалуйста.
Ага и почти сразу увидела избыточность не нужную
trim($s) - лишнее
function convKW($s){
$pattern = '/(\s*[,;]\s*)/i';
$s = trim(preg_replace($pattern,',',$s),',');
return str_replace(",",", ",$s);
}
Спустя 2 часа, 47 минут, 27 секунд (8.09.2011 - 10:31) Winston написал(а):
Так лучше ?
function convKW($s){
$pattern = '/\pZ*[,;]\pZ*/su';
return trim(preg_replace($pattern, ', ', trim($s)), ',');
}
Спустя 5 минут, 42 секунды (8.09.2011 - 10:37) olgatcpip написал(а):
Winston
Обясни чем?
я конечно вижу что строк меньше, собственно у себя певый вариант я все таки аналогично сократила в итоге.
Но может твоя регулярка быстрее рабтает?
А вообще я думала можно избежать такого большого количества trim
И кажется уже нашла один избыточный.
trim($s) НЕ НАДО -это точно!
Я исправлю в первом посте это
Обясни чем?
я конечно вижу что строк меньше, собственно у себя певый вариант я все таки аналогично сократила в итоге.
Но может твоя регулярка быстрее рабтает?
А вообще я думала можно избежать такого большого количества trim
И кажется уже нашла один избыточный.
trim($s) НЕ НАДО -это точно!
Я исправлю в первом посте это
Спустя 1 минута, 39 секунд (8.09.2011 - 10:38) olgatcpip написал(а):
Winston
Извини, поняла, чем твой вариант изящнее
Извини, поняла, чем твой вариант изящнее
Спустя 17 минут, 47 секунд (8.09.2011 - 10:56) Winston написал(а):
В общем мой первый код отрабатывает в среднем за 0.000050
А такой
За 0.000045 :)
А такой
function convKW($s){
$pattern = array(',', ';', ' ,', ' ;', ' , ', ' ; ', '; ');
return trim(str_replace($pattern, ', ', $s), ',');
}
За 0.000045 :)
Спустя 20 минут, 50 секунд (8.09.2011 - 11:17) olgatcpip написал(а):
Winston
Я попробовала твой первый вариант, чуть не то
Я попробовала твой первый вариант, чуть не то
Цитата |
++ ДО +++++++++++++++++++++++ 1 - ,wtrrt rrtertr , ывфывва, rtretertre, 2 - ;wtrrt rrtertr , ывфывва; 3 - ; , wtrrt rrtertr , ывфывва; ** ПОСЛЕ ************************ 1 - wtrrt rrtertr, ывфывва, rtretertre, 2 - wtrrt rrtertr, ывфывва, 3 - , wtrrt rrtertr, ывфывва, |
в начале и в конце запятые не нужны - это так для лучшей формулировки моей задачи
У меня во входных строках пробелы стоят, форум их убирает, невидно, так я поясняю.
Спустя 17 минут, 8 секунд (8.09.2011 - 11:34) Winston написал(а):
А так ?
function convKW($s){
$pattern = '/\pZ*[,;]\pZ*/su';
return trim(preg_replace($pattern, ', ', $s), ' ,');
}
Спустя 7 минут (8.09.2011 - 11:41) olgatcpip написал(а):
а так шикарно, не знала. что trim так тоже понимает параметры
думаю боле комфортного варианта не сможет быть
думаю боле комфортного варианта не сможет быть
_____________
Ласковое слово и кошке приятно... Плюсик в карму сойдет wink.gif
*smarty дока - новая любовь
Моё рукотворение ругайте, хвалите smile.gif
Веду маленький блог
в этом блоге публикую новые работы
WMR217126627282 wink.gif