Форум программистов, компьютерный форум, киберфорум
PHP: RegExp
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
19 / 17 / 5
Регистрация: 06.03.2014
Сообщений: 3,066
1

Получить из строчки массив

10.03.2021, 13:23. Показов 1562. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как через выражение можно поделить строчку по двум символам.
- Делим по запятой
- Делим по #

И так и так, а на выходе получить общий массив?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.03.2021, 13:23
Ответы с готовыми решениями:

Получить из строчки массив
Как из строчки ' 123 Авы f saSdf фы В @ 2' Получить массив, срока поделена по...

Выбрать записи с id от 1,2,3,4 и получить в результате 4 строчки
Есть 4 строчки с id 1,2,3,4 id time 1 12 2 14 3 11 4 15 Задача, получить 4...

Как получить массив int'ов из строчки char?
Собственно весь вопрос в теме. Как получить массив int'ов из строчки char? Вот мои попытки: ...

Получить данные из строчки
У меня есть метод, который принимает значения по tcp и записывает в переменную string X. string...

11
1084 / 746 / 364
Регистрация: 09.07.2018
Сообщений: 1,760
10.03.2021, 13:29 2
Лучший ответ Сообщение было отмечено Gerd199 как решение

Решение

Gerd199,
PHP
1
2
3
4
5
6
7
$str = 'Первая часть, Вторая часть # Третья часть';
 
$pattern = '~\h*[,#]\h*~';
 
$arr = preg_split($pattern, $str, null, PREG_SPLIT_NO_EMPTY);
 
var_dump($arr);
HTML5
1
2
3
4
array (size=3)
  0 => string 'Первая часть' (length=23)
  1 => string 'Вторая часть' (length=23)
  2 => string 'Третья часть' (length=23)
1
19 / 17 / 5
Регистрация: 06.03.2014
Сообщений: 3,066
10.03.2021, 13:44  [ТС] 3
Спасибо, работает.

Если не ошибаюсь есть функция, которая перебирает значения как цикл.

То есть на выходе получаем массив, затем массив в foreach

А так, чтобы сразу поиск и перебор каждого значения без дальнейшей необходимости в foreach?
0
1084 / 746 / 364
Регистрация: 09.07.2018
Сообщений: 1,760
10.03.2021, 13:55 4
Gerd199, а что в результате должно быть из этой строки: 'Первая часть, Вторая часть # Третья часть'?
0
19 / 17 / 5
Регистрация: 06.03.2014
Сообщений: 3,066
10.03.2021, 14:06  [ТС] 5
PHP
1
2
3
4
5
6
preg_replace_callback('~\h*[,#](.+)\h*~', function($m){
 
 
print_r($m);
 
}, 'Первая часть, fторая часть # Третья часть');
То что необходимо, только не удается получить тот же результат что и из вашего примера.
0
1084 / 746 / 364
Регистрация: 09.07.2018
Сообщений: 1,760
10.03.2021, 14:10 6
Gerd199, а чем вас не устроил мой вариант решения, если результат такой как было нужно?
0
19 / 17 / 5
Регистрация: 06.03.2014
Сообщений: 3,066
10.03.2021, 15:27  [ТС] 7
Все устроило, просто возможно 2 операции решить за одну функцию. Через preg_replace_callback практичнее будет..

Как получить тоже самое без пробелов в начале и конце через preg_replace_callback?

Возможно исключить

PHP
1
Первая часть, fторая часть # Третья часть ##,,
То есть, содержимое значения не должно быть менее 1 символа не учитывая пробелы. То есть исключить пустые значения.
0
1084 / 746 / 364
Регистрация: 09.07.2018
Сообщений: 1,760
10.03.2021, 16:10 8
Цитата Сообщение от Gerd199 Посмотреть сообщение
Через preg_replace_callback практичнее будет..
Не понимаю... preg_replace_callback() и preg_split() - это функции для разных задач. Исходя из требования
Цитата Сообщение от Gerd199 Посмотреть сообщение
Получить из строчки массив
и уточнения
Цитата Сообщение от Gerd199 Посмотреть сообщение
Как через выражение можно поделить строчку по двум символам
был сделан выбор в пользу preg_split(), потому что именно эта функция нужна для выполнения подобных задач.
0
19 / 17 / 5
Регистрация: 06.03.2014
Сообщений: 3,066
11.03.2021, 02:45  [ТС] 9
Через preg_replace_callback, невозможно аналогично выполнить? Вроде аналогично, только с возможностью перебора каждого вхождения...
0
1084 / 746 / 364
Регистрация: 09.07.2018
Сообщений: 1,760
11.03.2021, 10:28 10
Gerd199, разделить строку на массив? - нет.
0
19 / 17 / 5
Регистрация: 06.03.2014
Сообщений: 3,066
18.03.2021, 17:27  [ТС] 11
Не массив получит, сразу перебрать каждый результат в
PHP
1
2
3
4
5
6
function($m){
 
 
print_r($m);
 
}
Массив вытаскивать не нужно...
0
Эксперт PHP
5753 / 4133 / 1507
Регистрация: 06.01.2011
Сообщений: 11,276
18.03.2021, 20:43 12
Так?
PHP
1
2
3
4
5
6
7
<?php
 
$str = 'Первая часть, Вторая, часть # Третья часть';
 
preg_replace_callback('~[^,#]+~', function($match) {
    var_dump($match[0]);
}, $str);
Если вместо var_dump будет производиться изменение строки, то всё нормально. А если для других целей -- это как-то костыльно.
0
18.03.2021, 20:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.03.2021, 20:43
Помогаю со студенческими работами здесь

Дан массив чисел 3x3. Нужно транспонировать массив(строчки и столбцы поменять местами)
Помогите написать программу. Если можно с комментариями, чтобы я хоть разобрался.

Как мне получить числа из строчки разделенные пробелом?
Здравствуйте!!! Я решил порешать задачки на тимусе, а там половина задач начинается так: &quot;в строке...

Дан массив 4 на 4 из целых чисел, поменять местами элементы второй строчки с элементами четвёртой. Измененный массив вывести на экран в виде таблицы
Дан массив 4 на 4 из целых чисел, поменять местами элементы второй строчки с элементами четвёртой....

Нужно удалить все строчки, которые удовлетворяют условию заданой строчки
нужно удалить все строчки которые удовлетворяют условию заданой строчки, а то написал находит...

Нужно вывести из Listbox текст выбранной строчки и скачать файл с именем строчки
Дело такое. Программа при запуске сканирует файлы в нужной папку на ftp сервере и забивает имена в...

Текстовые файлы. Получить слово, которое образовано другими буквами каждой строчки
Создать текстовый файл, в каждой строчке которого первые два символа - буквы. Получить слово,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru