Ответы пользователя по тегу PHP
  • Как заменить только слово целиком в строке?

    kryamk
    @kryamk
    <?php
    
    // Исходный текст, в котором будем искать и заменять слова
    $field = "
    libero bryan, 
    sit amet adipiscing sem neque sed ipsum.bryan 
    bfringilla mauris sit amet nibh. https://site.com/member/bryan.html?r=nk07w, 
    https://site.com/member/bryan-t.html?r=nk07w. 
    https://site.com/bryan/test.html?r=nk07w Donec bibendum";
    
    // Регулярное выражение для поиска URL и слова 'bryan'
    // - https?:\/\/(?:www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b(?:[-a-zA-Z0-9()@:%_\+.~#?&\/=]*)
    //   Это паттерн для нахождения URL. Он включает http или https, необязательный www, и остальную часть URL.
    // - (\bbryan\b)
    //   Это паттерн для нахождения слова 'bryan' в тексте. Используем границы слова (\b) чтобы найти точное совпадение.
    //   Скобки вокруг \bbryan\b создают захватывающую группу, которую мы будем использовать в функции обратного вызова.
    $pattern = '/https?:\/\/(?:www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b(?:[-a-zA-Z0-9()@:%_\+.~#?&\/=]*)|(\bbryan\b)/';
    
    // Заменяем слово 'bryan' на 'betty', но только если оно не является частью URL
    $field = preg_replace_callback(
        $pattern, // Паттерн для поиска URL и слова 'bryan'
        function ($matches) {
            // Функция обратного вызова, которая вызывается для каждого совпадения
            // $matches - массив, где:
            // - $matches[0] содержит всё совпадение (URL или слово 'bryan')
            // - $matches[1] содержит только слово 'bryan', если оно найдено
            
            // Если $matches[1] существует, это значит, что найдено слово 'bryan' (вторая группа в паттерне)
            // В таком случае заменяем его на 'betty'
            // Иначе возвращаем оригинальное совпадение (это был URL, который не нужно изменять)
            return isset($matches[1]) ? 'betty' : $matches[0];
        },
        $field // Исходный текст, который мы будем обрабатывать
    );
    
    // Выводим результат
    echo $field;
    Ответ написан
    3 комментария
  • Как сделать безусловный перенос каждого слова на новую строку?

    kryamk
    @kryamk
    width: min-content
    Ответ написан
    Комментировать