Как правильно занести в массив строку разбив её на три элемента (разделённых) Первый по двоеточию, второй точка с запятой? PHP: $text ="АВТОРЫНОК : КУПЛЮ ; Куплю подшипники Т.8-9277-71-29-28."; $my_page = explode(":", $text);//пробую так
PHP: <?php $result = array(); $text = 'АВТОРЫНОК : КУПЛЮ ; Куплю подшипники Т.8-9277-71-29-28.'; $tmp = explode(';', $text); $result[] = $tmp[1]; $result = array_merge($result, explode(':', $tmp[0])); print_r($result);
А я бы так сделал: PHP: <?php $result = array(); $text ="АВТОРЫНОК : КУПЛЮ ; Куплю подшипники Т.8-9277-71-29-28."; $array = explode(':', $text); $result[] = $array[0]; $array = explode(';', $array[1]); $result = array_merge($result, $array); $result = array_map('trim', $result); print($result); Потому что массив понятнее: $result[0] где (авторынок), $result[1] что (куплю), $result[2] что товар (какую-то шняшку). Да и в "задании" именно так: "Первый по двоеточию, второй точка с запятой".
PHP: <?php $text="АВТОРЫНОК : КУПЛЮ ; Куплю подшипники Т.8-9277-71-29-28."; $text=preg_replace("{:}",";",$text,1); print_r(explode(";",$text)); ?>
Dagdamor Тогда уж str_replace() юзать, уж он в десятки раз быстрее при таких простых задачах. Убил бы за такую трату ресурсов
Psih У str_replace нет параметра limit - я бы тоже его использовал, если бы он был. А насчет траты ресурсов - опять регэкспофобия какая может быть трата на таком примитивном паттерне? Хотя конечно надо замерять.
Dagdamor 1). Зачем limit? 2). Регулярки сами по себе сложнее. Если не нужны сложные условия - строковыми функциями куда быстрее это делается (не факт что удобнее).
PHP: <?php $str = 'АВТОРЫНОК : КУПЛЮ ; Куплю подшипники Т.8-9277-71-29-28.'; $res = array(); $res[] = strtok($str, ':'); $res[] = strtok(';'); $res[] = substr(strstr($str, ';'), 1); print_r($res); Код (Text): Array ( [0] => АВТОРЫНОК [1] => КУПЛЮ [2] => Куплю подшипники Т.8-9277-71-29-28. )