За последние 24 часа нас посетил 20551 программист и 1124 робота. Сейчас ищут 704 программиста ...

Как добавить функцию удаления найденного текста в строке?

Тема в разделе "PHP для новичков", создана пользователем Илья_2712, 3 мар 2021.

Метки:
  1. Илья_2712

    Илья_2712 Новичок

    С нами с:
    23 дек 2020
    Сообщения:
    29
    Симпатии:
    0
    Добрый день!
    Ребята, подскажите, пожалуйста, как я могу изменить свою функцию, чтобы она удаляла найденный текст из строки.
    Есть такой код:
    PHP:
    1. <?php echo apply_filters('premmerce_filter_render_checkbox_title', $term->name, $term); ?>
    Он выводит категорию товара, т.е. "Мужские куртки" или "Куртки для детей".
    Мне нужно добавить функцию, чтобы убрать гендерное название, чтобы в итоге получилось - "Куртки".

    Пробовал
    PHP:
    1. str_replace (array('Мужские', 'для детей'), array('', '')
    , но конечно же это неверно. Так как перезаписывать строку не нужно, а лишь только удалить указанный текст. mb_strpos думаю тоже не подойдет. А с остальными функциями я еще не сталкивался.

    Как решить данную задачу ну и самое главное - куда именно вставить это решение в моем коде.

    Спасибо за любую помощь или подсказки!
    --- Добавлено ---
    Вот записал с str_replace, все работает. Но нужна другая функция)
    PHP:
    1. <?php echo apply_filters('premmerce_filter_render_checkbox_title', str_replace (array('Мужские', 'для детей'), array('', ''), $term->name), $term); ?>
    --- Добавлено ---
    Вот пробую с str_replace, все работает.
    PHP:
    1. <?php echo apply_filters('premmerce_filter_render_checkbox_title', str_replace (array('Мужские', 'для детей'), array('', ''), $term->name), $term); ?>
    Но нужна другая функция)
    Ступил, этот код как раз и работает правильно.
    PHP:
    1. <?php echo apply_filters('premmerce_filter_render_checkbox_title', str_replace (array('Мужские', 'для детей'), array('', ''), $term->name), $term); ?>
    --- Добавлено ---
    В
    PHP:
    1. <?php echo apply_filters('premmerce_filter_render_checkbox_title', str_replace (array('Мужские слипоны', 'Застежка'), array('Проверка', ''), $term->name), $term); ?>
    от пробую с str_replace, все работает. Но нужна другая функция)
    Ступил, этот код как раз и работает правильно.
    PHP:
    1. <?php echo apply_filters('premmerce_filter_render_checkbox_title', str_replace (array('Мужские', 'для детей', 'для детей', 'для малчиков'), array('', ''), $term->name), $term); ?>
    Остался только один вопрос - для более корректного сравнения нужно сначала привести всё к строчным буквам с помощью mb_strtolower. Как это можно сделать? Куда это прописать?
     
  2. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    Попробуйте описать проблему в нескольких словах.
    Чта на что и где нужно заменить?
     
  3. Илья_2712

    Илья_2712 Новичок

    С нами с:
    23 дек 2020
    Сообщения:
    29
    Симпатии:
    0
    В
    PHP:
    1. <?php echo apply_filters('premmerce_filter_render_checkbox_title', str_replace (array('Мужские слипоны', 'Застежка'), array('Проверка', ''), $term->name), $term); ?>
    от пробую с str_replace, все работает. Но нужна другая функция)
    Ступил, этот код как раз и работает правильно.
    PHP:
    1. <?php echo apply_filters('premmerce_filter_render_checkbox_title', str_replace (array('Мужские', 'для детей', 'для детей', 'для малчиков'), array('', ''), $term->name), $term); ?>
    Остался только один вопрос - для более корректного сравнения нужно сначала привести всё к строчным буквам с помощ mb_strtolower
    Постараюсь)

    У меня есть вот это:
    PHP:
    1. <?php echo apply_filters('premmerce_filter_render_checkbox_title', $term->name, $term); ?>
    Это формула выводит название категории. Пример - "Женские куртки"

    Надо удалить женские, Женские и т.д.
    Для этого нужно, как я понимаю сначала привести к нижнему регистру функцией mb_strtolower, а затем перезаписать нужные значения функцией str_replace.
     
  4. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    Сдаюсь.
     
  5. Илья_2712

    Илья_2712 Новичок

    С нами с:
    23 дек 2020
    Сообщения:
    29
    Симпатии:
    0
    Не надо))
    Давай попробуем вместе разобраться.
    Вот если вызвать функцию str_replace перед значением $term->name, то все получается.
    PHP:
    1. <?php echo apply_filters('premmerce_filter_render_checkbox_title', str_replace (array('Женские'), array(''), $term->name), $term); ?>
    Но чтобы не плодить значения, которые я указываю, типа "Женские", "женские" - надо сначала привести всю эту историю к нижнему регистру.
    В другом случае я использую это $data = mb_strtolower ($data); Работает отлично, осталось только прикрутить к моему примеру))
     
  6. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    Попробуйте использовать str_ireplace() вместо str_replace()
    Это её регистронезависимая версия.
    Единственно что, возможно, я не уверен, придется перекодировать в однобайтную кодировку.
     
  7. Илья_2712

    Илья_2712 Новичок

    С нами с:
    23 дек 2020
    Сообщения:
    29
    Симпатии:
    0
    Изменил на ireplace - не помогло. А как перекодировать? Я про такое даже не слышал)
     
  8. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    На пробу можно в обычном Блокноте.
    Скрипт и обрабатываемый текст сохраните как ANSI.
    Потом почитайте про iconv()