Почему preg_replace удаляет знак + из строки? Я хочу, чтобы знак "+" включал

Строка: Two + Two & One + One ?

Как включить знак +. Я не хочу убирать знак + одновременно с заменой & на -. Я использовал следующие

$string = preg_replace('/&#?[\+\sA-Za-z0-9]+;/i', '-', $string);

Это дает результат: Two Two - One One ?

Требуемый результат: Two + Two - One + One ?

Примечание: Вы можете предложить любую preg_replace, которая позволяет включать + подписывать и заменять & на -. Я на сайте WordPress.

Я не нашел ответа на свою проблему с stackoverflow. Все говорят об удалении знака +. Но хочу включить.

Тот факт, что вы заставляете & работать, означает, что ваша строка на самом деле не то, чем вы поделились, а закодирована в html.

apokryfos 17.07.2018 13:59
[\+\sA-Za-z0-9]+ соответствует 1 или более символам в наборе символов, и + присутствует. Удалите его, если вы не хотите его удалять.
Wiktor Stribiżew 17.07.2018 14:01

@apokryfos Я не понимаю, что вы говорите о &. Мне просто нужно включить знак + и заменить & на -. Какой бы метод ни был доступен.

samar 17.07.2018 14:10
& отсутствует в строке, которую вы поделили, - вот что я говорю. Вы уверены, что работаете именно с этой строкой?
apokryfos 17.07.2018 14:10

Вы обновили свое регулярное выражение до &#?. Еще хотите заменить &# на тире? Возможно, вы можете добавить еще несколько примеров, которые хотите заменить в своем вопросе.

The fourth bird 17.07.2018 14:40

Я думаю, что все, что предлагают, правильно. Потому что даже мой preg_replace('/&#?[\+\sA-Za-z0-9]+;/i', '-', $string); let + подписывает включение, но что-то еще удаляет его.

samar 17.07.2018 14:47
Стоит ли изучать 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
6
52
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

используйте этот

$ string = preg_replace ('/ & / i', '-', $ строка);

ему нужно & amp; не &, это HTML-объект

delboy1978uk 17.07.2018 14:01
Ответ принят как подходящий

Используя регулярное выражение, это то, что вам нужно:

<?php

$regex = '#\&(amp;)?#';
echo preg_replace($regex, '-', 'Two + Two & One + One ?') . "\n";
echo preg_replace($regex, '-', 'Two + Two &amp; One + One ?') . "\n";

Выход:

Two + Two - One + One ? 
Two + Two - One + One ?

Что вы можете увидеть здесь https://3v4l.org/s1tVW

И поиграйте с регулярным выражением здесь https://regex101.com/r/G7CbKF/1

Он удалил строку после «Два Два -».

samar 17.07.2018 14:23

не с моим кодом, нажмите ссылку 3v4l и убедитесь сами

delboy1978uk 17.07.2018 14:25

Да, там работает. но не знаю, почему он не работает на моем веб-сайте WordPress.

samar 17.07.2018 14:27

просто используйте МОЕ регулярное выражение, избавьтесь от этого материала

delboy1978uk 17.07.2018 14:32

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