Как добавить символ перед всеми числами, разделенными пробелом в строке, используя php

У меня есть строка, заполненная числами, и я пытаюсь добавить символ в начало каждой серии чисел:

$dna = "273385 14093 1522520 1759 277697 283096 1133193 191835 246752 204984 973590"

но я хочу закончить с:

$dna = "m#273385 m#14093 m#1522520 m#1759 m#277697 m#283096 m#1133193 m#191835 m#246752 m#204984 m#973590"

самое близкое, что я получил, использует

$dna= preg_replace('~(\w+)~', '$1m#',$dna);

что дает мне:

$dna = "273385m# 14093m# 1522520m#"

Как я могу заставить его добавить на передний план?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
42
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Вы можете использовать

preg_replace('~\d+~', 'm#$0', $dna)

См. демонстрация регулярных выражений

\d+ будет сопоставлять серии из 1 или более цифр, а m#$0 заменит каждое совпадение на m# и полное значение совпадения (упомянутое обратной ссылкой $0).

См. демонстрация PHP:

$dna = "273385 14093 1522520 1759 277697 283096 1133193 191835 246752 204984 973590";
echo preg_replace('~\d+~', 'm#$0', $dna);
// => m#273385 m#14093 m#1522520 m#1759 m#277697 m#283096 m#1133193 m#191835 m#246752 m#204984 m#973590

Вы можете использовать str_replace, чтобы внести изменения.

$dna = "273385 14093 1522520 1759 277697 283096 1133193 191835 246752 204984 973590";
$dna = 'm#' . str_replace(' ',' m#',$dna);

..или общий случай? (Я предполагаю, что формат строки представляет собой группы цифр, разделенных одним пробелом)

define('DNA_SEPARATOR', ' ');
define('DNA_PREFIX', 'm#');

$dna = "273385 14093 1522520 1759 277697 283096 1133193 191835 246752 204984 973590";
$arr = explode(DNA_SEPARATOR, $dna);

// In case you're not sure it's all groups of digits
// $arr = array_filter($arr, function($v) { return is_numeric($v); });

$arr = array_map(function($v) { return DNA_PREFIX.$v; }, $arr);
$dna = implode(DNA_SEPARATOR, $arr);

Вот способ, который не упоминается (не регулярное выражение)

$dna = "273385 14093 1522520 1759 277697 283096 1133193 191835 246752 204984 973590";
$dna = 'm#'.implode(' m#', explode(' ', $dna));
echo $dna;

Песочница

Это предполагает, что строка не будет пустой, если это так, вы получите m# в результате, если вы сначала не проверите. И что в строке только цифры.

Вы можете легко исправить первое.

   $dna = empty($dna) ? '': 'm#'.implode(' m#', explode(' ', $dna));

Другие вопросы по теме