Как заменить выбранную иглу в нитке

У меня есть строка: "[a,b] some text [b,a] and some more"

У меня также есть значение $c, которое, если оно равно 1, мне нужно показать такую ​​строку: "a some text b and some more" (выбирает первую часть [x, y] (x))

Я пытаюсь сделать это с str_replace, но, похоже, не работает.

Не могли бы вы предложить решение?

Я думаю, это работа для preg_replace.

Jules R 07.01.2019 11:52

Не могли бы вы подсказать, как это сделать?

Vidma Kesius 07.01.2019 11:55

Каков ваш вариант использования для этого? Или это курс / домашнее задание?

Jonnix 07.01.2019 11:59

@JonStirling Для своего проекта я пишу функцию для отображения текста по полу человека.

Vidma Kesius 07.01.2019 12:00

Затем создайте один заполнитель и замените его строкой. Не используйте эти параметры настраиваемой переменной в строковом формате: P

Jonnix 07.01.2019 12:01

@JonStirling Нет ли для этого решения preg_replace?

Vidma Kesius 07.01.2019 12:02

Я уверен, что может быть такой, который мог бы включать использование preg_replace, но я не могу придумать способ сделать это, который не был бы злым, неподдерживаемым и, как правило, чрезмерно спроектированным.

Jonnix 07.01.2019 12:02

Какие еще возможные значения $c?

Nick 07.01.2019 12:04

@Nick Только 1 или 0, 1 показывает 'a', если 0, показывает 'b' вместо [a, b]

Vidma Kesius 07.01.2019 12:05
Стоит ли изучать 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 и хотите разрабатывать...
0
9
95
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Вы можете использовать свою переменную $c, чтобы изменить строку подстановки для вызова preg_replace, например:

$string = "[a,b] some text [b,a] and some more";
$c = 1;
echo preg_replace('/\[([^,]+),([^]]+)\]/', $c ? '$1' : '$2', $string) . "\n";
$c = 0;
echo preg_replace('/\[([^,]+),([^]]+)\]/', $c ? '$1' : '$2', $string) . "\n";

Регулярное выражение ищет [, за которым следует некоторое количество символов, отличных от , (группа 1), ,, затем некоторое количество символов, отличных от ] (группа 2), и ]. Соответствующий текст заменяется группой 1 или группой 2 в зависимости от значения $c.

Вывод:

a some text b and some more 
b some text a and some more

Демо на 3v4l.org

Я сделал это для подстрок в одном Theard, вы можете использовать это решение и в своем случае.

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