Динамический поиск-замена части строки

Я хочу избавиться от второй части переменной PHP, которая имеет фиксированный формат, но числа всегда разные. Поэтому я не могу использовать простой str_replace. Я ищу решение для регулярных выражений, чтобы исправить это.

$string = "First example from this part 10 t/m 16 it has to be removed";

$string = "Second example from this part 12 t/m 22 it has to be removed";

Должны стать:

$string = "First example";

$string = "Second example";

Если вы не продемонстрируете нам свои усилия по ее решению, это будет закрыто как не по теме.

revo 17.04.2018 11:14

Значит, вам всегда нужны два первых слова? Почему только решение с регулярным выражением? Есть так много других решений, которые могут это сделать

Andreas 17.04.2018 11:23
Стоит ли изучать 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
2
42
2

Ответы 2

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

$strings = [
    "First example from this part 10 t/m 16 it has to be removed",
    "Second example from this part 12 t/m 22 it has to be removed"
];
foreach ($strings as $string) {
    $parts = explode(" ", $string);
    echo implode(" ", [$parts[0], $parts[1]]);
}

Демо

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

^[^\s]+\s[^\s]+

Вы можете использовать explode, implode и array_slice. Это намного быстрее и требует меньше памяти, чем регулярное выражение. Explode создает массив строк, разделенных пробелом. Array_slice (в данном случае) принимает два первых элемента массива. Implode создает строку из массива (array_slice два элемента) и добавляет пробел между ними.

$string = "First example from this part 10 t/m 16 it has to be removed";
echo implode(" ", array_slice(explode(" ", $string), 0,2)); // First example
echo "\n";

$string = "Second example from this part 12 t/m 22 it has to be removed";
echo implode(" ", array_slice(explode(" ", $string), 0,2)); // Second example

https://3v4l.org/efX1t


Если вы настаиваете на регулярном выражении, это поможет.

$re = '/(.*?\s.*?\s)/';
$str = 'First example from this part 10 t/m 16 it has to be removed';

preg_match($re, $str, $match);

echo $match[1]; // First example

https://3v4l.org/0efTq

Шаблон ищет любые символы, пробел, любые символы и снова пробел.

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