Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Какие правильные символы должны быть в preg_replace?

Какие правильные символы должны быть в preg_replace?


     22.02.2021    Все вопросы » Общие вопросы по PHP    886

вопрос
Умные люди, помогите "правильно отрезать"...

Пытаюсь от года в переменной отрезать " / ... on DVD", после чего забрать из оставшегося последние четыре символа.
И уже чистый "год" должен поставляться в нужном месте.

Притом вариант написания может приходить в переменную разный:

$god = "2012";
$god = "02/2012";
$god = "October 16, 2015";
$god = "01/1992 / Apr 03 2006 on DVD";

$god1 = preg_replace(' / .*$/','',$god); // отрезаем от года " / ... on DVD"

$godchistiy = substr($god1, -4); // берём от "года" последние четыре символа



preg_replace сейчас неправильнно написан (но прокатывает с вариантами "01/1992 / Apr 03 2006 on DVD", "02/2012" и "2012", но в случае варианта "October 16, 2015" возврашает "ober")

Помогите правильно написать preg_replace, чтоб отрезал всё начиная с трёх символов " / " (пробел слэш пробел) до конца строки

Или как иначе сделать "отрезание" " / ... on DVD" с учётом того, что его может не быть

Ответа пока нет


6 комментариев

lutskboy
Эксперт

lutskboy - 22 февраля 2021 18:03 -

\d{4} - четыре цифри. год
и ищите его. или не то?

NONSENS
Юзер

NONSENS - 22 февраля 2021 20:40 -

Не то - нужно в preg_replace заменить " ' / .*$/' " на подходящие "символы", которые бы означали: "от " / " (пробел слэш пробел) до конца строки"

Четыре последние символа отлично забираются/отрезаются во всех случаях - дело не в них.

Дело в preg_replace - он не правильно работает: отрезает "всё подряд" (в приведённом случае отрезает " 16, 2015") - нужно выражение/код/заклинание (не знаю как это правильно назывется), которое бы означало "от " / " (пробел слэш пробел) до конца строки". Прошу подсказать данное "заклинание"... Я пока не понимаю данного "магического языка" (слэш, обратный слэш, фигурные скобки, стрелки вверх и т.д.) - вот и прошу подсказать "выражение" означающее от " / " до конца строки...

lutskboy
Эксперт

lutskboy - 22 февраля 2021 20:55 -


NONSENS
Юзер

NONSENS - 22 февраля 2021 22:18 -

Не работает - ошибки сыпятся (нужно чтоб на любом "утюге" работало - начиная с пятого PHP)

Я другим путём реализовал, но это слишком "громоздко":


// $god = "2012";
// $god = "02/2012";
// $god = "October 16, 2015";
$god = "01/1992 / Apr 03 2006 on DVD";

if (strpos($god, 'on DVD') !== false) {
    $proverkagoda = 1;
	} else {
			$proverkagoda = 0;
			}
	
if ($proverkagoda = 1){
    $god1 = strstr($god, " / ", true);
	}

if ($god1){
	echo "результат: ".$god1;
	} else {
			echo "результат: ".$god;
			}


Но пока, видимо, придётся так оставить, если никто не подскажет...

dj-avtosh
PHP-developer

dj-avtosh - 23 февраля 2021 19:46 -

$god1 = preg_replace('~ / .*$~','',$god);

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

NONSENS
Юзер

NONSENS - 24 февраля 2021 18:25 -

Спасибо большое!

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх