Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.92/25: Рейтинг темы: голосов - 25, средняя оценка - 4.92
5 / 5 / 0
Регистрация: 21.05.2010
Сообщений: 156
1

как удалить из строки несколько определённых слов?

26.02.2016, 11:44. Просмотров 5036. Ответов 5
Метки нет (Все метки)


у меня есть строка:

PHP
1
<?=$arItem["NAME"]?>
которая выводит примерно такое:

Дубленка из тосканского ягненка с поясом и ассиметричным отложным воротником

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

с поясом и ассиметричным отложным воротником

на сайте есть ещё масса товаров: шубы из афганского каракуля, куртки из испанской кожи, шубы из дикого американского енота и т.д. и т.п.

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

раньше задача состояла в том, чтобы удалить лишь первые слова "шуба", "дубленка", "куртка". и тогда я решила её таким образом:

PHP
1
<?=substr(strstr($arItem['NAME'], ' '), 1);?>
теперь, пробуя убрать слова "из тосканского ягненка" следующими способами:

PHP
1
<?=str_replace('из тосканского ягненка', '', $arItem['NAME'])?>
PHP
1
<?=str_replace(array('из','тосканского','ягненка'), '', $arItem['NAME']);?>
у меня ничего не выходит. то есть строка остаётся такой, какой и была

помогите, пожалуйста, разобраться...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.02.2016, 11:44
Ответы с готовыми решениями:

Как пакетно из файлов удалить строки, которые не содержат определённых слов?
Здравствуйте !!! Помогите пожалуйста решить одну задачу. Пытался решить сам, но желаемого...

Как ограничить ввод определённых слов в TextBox?
Всем здравствуйте. Какое событие TextBox следует использовать для проверки содержимого при вводе...

Как удалить все строки, где больше 7 слов
Здравствуйте! Помогите пожалуйста написать макрос для удаления всех строк в столбце (D3 : D47),...

Ввести несколько слов, и удалить каждую третью букву
надо ввести несколько слов. и удалить каждую 3 букву

5
Фрилансер
Эксперт JSЭксперт HTML/CSSЭксперт PHP
1840 / 1338 / 597
Регистрация: 12.01.2011
Сообщений: 5,371
26.02.2016, 11:48 2
Лучший ответ Сообщение было отмечено Em1ly как решение

Решение

PHP
1
2
3
4
5
<?php
 $arItem['NAME'] ="Дубленка из тосканского ягненка с поясом и ассиметричным отложным воротником";
$original = str_replace(array('Дубленка','из','тосканского','ягненка'),array(''),$arItem['NAME']);
print_r(trim($original));
?>
Или так
PHP
1
2
3
4
 $arItem['NAME'] ="Дубленка из тосканского ягненка с поясом и ассиметричным отложным воротником";
preg_match("~\bс\s*.+\b~u",$arItem['NAME'],$m);
list($a) = $m;
echo $a;
2
5 / 5 / 0
Регистрация: 21.05.2010
Сообщений: 156
26.02.2016, 13:12  [ТС] 3
Azdeman, спасибо большое за помощь!

задача, в итоге, была решена так:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
 
    $final_arResult = $arResult;
 
    $replace = array ("Дубленка", "Шуба", "Куртка", "из", "тосканского",
            "ягненка", "испанского", "меринильо", "мериноса","скандинавской",
            "норки", "афганского","каракуля", "дикого", "американского", "енота",
            "серебристой", "лисы", "итальянской", "испанской", "кожи");
 
    foreach($final_arResult["ITEMS"] as &$arItem)
    {
        $arItem["NAME"] = str_ireplace($replace, "", $arItem["NAME"]);
    }
?>
правда теперь появилась новая проблема

строчка выводится с пробелами в начале (думаю, это пробелы, которые остались между удалёнными словами), то есть:

____с поясом и ассиметричным отложным воротником

как бы избавиться от этих пробелов теперь?
0
Фрилансер
Эксперт JSЭксперт HTML/CSSЭксперт PHP
1840 / 1338 / 597
Регистрация: 12.01.2011
Сообщений: 5,371
26.02.2016, 13:16 4
Лучший ответ Сообщение было отмечено Em1ly как решение

Решение

Цитата Сообщение от Em1ly Посмотреть сообщение
как бы избавиться от этих пробелов теперь?
PHP
1
echo trim($arItem["NAME"]);
или если только в начале строки убрать то
PHP
1
echo ltrim($arItem["NAME"]);
1
5 / 5 / 0
Регистрация: 21.05.2010
Сообщений: 156
26.02.2016, 13:19  [ТС] 5
Azdeman, спасибо)

решила проблему так:

заменила:

PHP
1
str_ireplace($replace, "", $arItem["NAME"])
на:

PHP
1
ltrim(str_ireplace($replace, "", $arItem["NAME"]))
0
Фрилансер
Эксперт JSЭксперт HTML/CSSЭксперт PHP
1840 / 1338 / 597
Регистрация: 12.01.2011
Сообщений: 5,371
26.02.2016, 13:19 6
да можно и так, не суть.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.02.2016, 13:19

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Удалить из файла строчки содержащие несколько самых длинных слов
Подскажите как это можно сделать.

Как удалить слой, или управлять альфа-каналом мувика в определённых кадрах?
Добрый день. Говорят, что это возможно, но я не знаю как. Итак, у меня такая задача: есть мувик, в...

Удалить первые k слов из строки, сдвинув на их место последующие слова строки
Дана строка символов, состоящая из произвольного текста на английском языке, слова разделены...

Удалить первые k слов из строки, сдвинув на их место последующие слова строки
Помогите пожалуйста написать программу:


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.