Как разбить строку через разделитель несколько раз?
Есть хэш сумма файла, например, 392981414524f56f68d9f4a47e7072f2
Можно в одно действие, например с помощью sprintfsscanf, привести строку к такому формату: 39298141-4524-f56f-68d9-f4a47e7072f2
Дополнительно:
$result = preg_replace('~^(.{8})(.{4})(.{4})(.{4})(.*)~', '$1-$2-$3-$4-$5', $str); |
$result = preg_replace('~^(.{8})(.{4})(.{4})(.{4})(.*)~', '$1-$2-$3-$4-$5', $str);
Самый простой и лаконичный вариант
$uuid_str = "392981414524f56f68d9f4a47e7072f2"; echo join('-', sscanf($uuid_str, '%8s%4s%4s%4s%12s')); |
$uuid_str = "392981414524f56f68d9f4a47e7072f2"; echo join('-', sscanf($uuid_str, '%8s%4s%4s%4s%12s'));
Ещё вариант через substr
$uuid_str = "392981414524f56f68d9f4a47e7072f2"; $uuid_dashed = substr($uuid_str , 0, 8) . '-' . substr($uuid_str , 8, 4) . '-' . substr($uuid_str , 12, 4) . '-' . substr($uuid_str , 16, 4) . '-' . substr($uuid_str, 20) ; var_dump($uuid_dashed); |
$uuid_str = "392981414524f56f68d9f4a47e7072f2"; $uuid_dashed = substr($uuid_str , 0, 8) . '-' . substr($uuid_str , 8, 4) . '-' . substr($uuid_str , 12, 4) . '-' . substr($uuid_str , 16, 4) . '-' . substr($uuid_str, 20) ; var_dump($uuid_dashed);
- Алексей Евтеев Вам сюда
https://regex101.com/r/lM38To/1
Можно, но это не будет красиво. Символ из строки можно печатать по его порядковому номеру(индексу). Если строка всегда одного паттерна, то записать её через конкатенацию
https://www.php.net/manual/ru/language.types.string.php пример 17
- Разве функции по форматированию строк sprintf sscanf не для этого были придуманы (чтобы форматировать строку в нужный вид)?
- Алексей Евтеев, оно работает с переменными, то есть можно добавить что то в начало или конец переменной и так же поиграть с типами, но не по символьно, возможно можно как то запилить через регулярки, но это тоже не будет красиво
хотя вполне красиво. Там дали пример
Ответы:
Вряд-ли можно найти тут решение в 1 шаг. По смыслу задача звучит так. Дано число в Hex нотации.
Отформатировать его как UUID.
strval(new UUID("392981414524f56f68d9f4a47e7072f2") |
strval(new UUID("392981414524f56f68d9f4a47e7072f2")
Это - гипотетический код который мог-бы быть PHP
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для разбиения строки через разделитель несколько раз в PHP можно воспользоваться функцией explode(). Эта функция разбивает строку на подстроки, используя заданный разделитель, и возвращает массив с этими подстроками.
Пример использования функции explode() для разбиения строки через разделитель несколько раз:
$string = "apple,orange,banana,grape"; $separator = ","; $parts = explode($separator, $string);
В данном примере строка "apple,orange,banana,grape" будет разбита на подстроки с использованием запятой в качестве разделителя. Результатом будет массив $parts, содержащий четыре элемента: "apple", "orange", "banana", "grape".
Если необходимо разбить строку только определенное количество раз, можно воспользоваться третьим параметром функции explode(), который указывает максимальное количество элементов, на которое нужно разбить строку:
$string = "apple,orange,banana,grape"; $separator = ","; $limit = 2; $parts = explode($separator, $string, $limit);
В этом примере строка будет разбита на две подстроки с использованием запятой в качестве разделителя. Результатом будет массив $parts, содержащий два элемента: "apple" и "orange,banana,grape".
Таким образом, используя функцию explode() с параметрами разделителя и максимального количества элементов, можно легко разбить строку через разделитель несколько раз в PHP.