У меня есть строка: "[a,b] some text [b,a] and some more"
У меня также есть значение $c, которое, если оно равно 1, мне нужно показать такую строку:
"a some text b and some more" (выбирает первую часть [x, y] (x))
Я пытаюсь сделать это с str_replace, но, похоже, не работает.
Не могли бы вы предложить решение?
Не могли бы вы подсказать, как это сделать?
Каков ваш вариант использования для этого? Или это курс / домашнее задание?
@JonStirling Для своего проекта я пишу функцию для отображения текста по полу человека.
Затем создайте один заполнитель и замените его строкой. Не используйте эти параметры настраиваемой переменной в строковом формате: P
@JonStirling Нет ли для этого решения preg_replace?
Я уверен, что может быть такой, который мог бы включать использование preg_replace, но я не могу придумать способ сделать это, который не был бы злым, неподдерживаемым и, как правило, чрезмерно спроектированным.
Какие еще возможные значения $c?
@Nick Только 1 или 0, 1 показывает 'a', если 0, показывает 'b' вместо [a, b]






Вы можете использовать свою переменную $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
Я сделал это для подстрок в одном Theard, вы можете использовать это решение и в своем случае.
Я думаю, это работа для preg_replace.