Есть строка Код (Text): sl/ovo / slovo // slovo Нужно извлечь только "sl/ovo" и только один раз Тоесть, ориентироваться, искать до символов " /", дальше не искать Если паттерн такой Код (Text): $pattern = "#.*\s/#"; То результат такой Код (Text): sl/ovo / slovo / А нужен результат такой Код (Text): sl/ovo sl/ovo или фраза может быть любой абсолютно, но только, еще раз повторю, извлекать до таких символов " /".
Код (Text): slovo // slovo / sl/ovo В этом случае тоже должен извлечь "sl/ovo" ? Или первый элемент всегда тот который нужен?
Спасибо за решение, но я упоминал регулярки, потому что хотел дальше тестировать ... Просто, если в целом - то строки могут быть такие: Код (Text): $a = sl/ovo / slovo // slovo (1000); $b = fraza fraza fraza(1000); $c = slo/vo (2000) // и т.д. Резултат такой должен быть: Код (Text): $a = sl/ovo (1000); $b = fraza fraza fraza(1000); $c = slo/vo (2000); То есть для $а, извлекать "sl/ovo" и добавлять (1000) Строку $b и $c не менять , потом как там нет " /".
О мифических "потому что хотел дальше тестировать" мне не было ведомо. Смею предположить, что на следующее решение задачи(именно решение) будет также наложено вето "потому что хотел дальше" =)
Не будет, точно ... Я просто спрашивал вначале, так как хотел понять, как решить первый шаг задачи а потом браться за остальные шаги.. Если сможете помогите, это уже окончательный вопрос. Добавлено спустя 8 минут 21 секунду: Я бы мог сделать через кучу IF, strpos, strreplace. Но хочу добиться более элегантного решения.
Код (PHP): $a = 'sl/ovo / slovo // slovo (2000)'; $foo = preg_split("/(?=[ \/]*[\s])|(?=[ \/]*[\s][\(])|(?=[ \/]*[\(])/",$a,-1); $str = current($foo) . ' ' . end($foo); print $str;
При Код (Text): $a = 'slovo sdsd / slovo2 (2000)'; выкидывает slovo (2000) а должно slovo sdsd (2000) при $a=slovo; выкидывает slovo slovo а должно просто без изменений.. slovo
У вас есть мой пример который вы можете доработать, я мальца устал от "мифических шаблонов" =) Добавлено спустя 1 минут 0 секунд: Код (PHP): $a = 'sl/ovo / slovo // slovo (20020) '; //$a = 'sl/ovo / slovo // slovo(20020) / sl(1000)'; //$a = 'slovo'; //$a = 'slovo slovos / ee (2000)'; $foo = preg_split("/(?=[\s]*[\s][\/])|(?=[\s][\/]*[\s])|(?=[(*])/",$a,-1); if(count($foo) > 1) $str = current($foo) . ' ' . end($foo); else $str = current($foo); print $str;