Regex PHP содержит определенное слово

Я хочу получить первую ссылку моего сообщения WordPress в пользовательском поле сообщения. Я узнаю, что кто-то был в такой же нужде, как и я, и получил очень хороший ответ:

function my_save_post( $post_id, $post ) {
    if ( wp_is_post_revision( $post_id ) )
        return;

    $matches = array();
    preg_match_all( '/href\s*=\s*[\"\']([^\"\']+)/', $post->post_content, $matches );

    $first_link = false;
    if ( ! empty( $matches[1][0] ) )
        $first_link = $matches[1][0];

    update_post_meta( $post_id, 'link', esc_url_raw( $first_link ) );
}

Моя проблема в том, что я хотел бы, чтобы preg_match_all имел еще одно условие, я хотел бы получить только первую ссылку, содержащую определенную строку: bouture.com, я думаю, что это возможно, потому что это уже «строковое условие» с href, но я не знаю, как это сделать.

Вот несколько примеров ссылок, которые я хотел бы получить с помощью выражения REGEX:

https://www.bouture.com

https://www.bouture.com/example

https://www.bouture.com/category/post-title/

Если у вас есть идеи, это было бы здорово!

Спасибо !

вы можете либо использовать положительный просмотр вперед: /href\s*=\s*[\"\'](?=[^\"\']*bouture.com)([^\"\']+)/, либо перебирать $matches и смотреть, совпадает ли что-нибудь. Я бы рекомендовал второй для вас.

markalex 05.04.2023 09:50
href\s*=\s*[\"\'](https://www.bouture.com/[^\"\']+), вероятно, уже должно сработать.
CBroe 05.04.2023 09:54

Спасибо, я попробовал ваше предложение, и оно отлично работает!

Jonathan - Service Web ARYUP 05.04.2023 09:56
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать 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 и хотите разрабатывать...
3
3
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

просто проверьте $matches[1]

foreach($matches[1] ?? [] as $url){
    if (stripos($url, 'bouture.com') !== false){
        $first_link = $url;
        break;
    }
}

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