Профиль пользователя заблокирован сроком «навсегда» без указания причины
  • Как вытащить текст из переменной в php?

    gobananas
    @gobananas
    finishhim.ru
    preg_match('/<title>(.*?)<\/title>/ism', $a, $res);

    И в $res[1] у вас будет NameSite.com
    Ответ написан
    Комментировать
  • Как найти элемент массива в тексте и удалить по шаблону?

    @antonowano
    Профессиональный самоучка
    Мне не понятен смысл. В исходном варианте удаляются все ссылки из контента, в вашем варианте только перечисленные в $links_mass.
    Да и кстати вы обновляете пост столько раз сколько у вас ссылок, достаточно 1 раз:
    function links_remove () {
        $args = array ('numberposts' => 9999);
        $allposts = get_posts( $args );
    
        foreach( $allposts as $post ) {
            $id = $post->ID;
            $content = $post->post_content;
            $links_mass=array(/*Сотни ссылок через запятую*/);
    
            foreach($links_mass as $link) {
                $pattern = '/<a href="'/.$link./'" (.+?)>|<\/a>/'; /* тут вся проблема*/
                $new_content = preg_replace ($pattern, '', $content);
            }   
            
            $new_post = array();
            $new_post['ID'] = $id;
            $new_post['post_content'] = $new_content;
            wp_update_post( $new_post );
        }
    }


    И саму ссылку нужно привести к строке в регулярном выражении, потому что некоторые символы из ссылки могут быть восприняты как спецсимволы. Не забывайте экранировать ссылки функцией preg_quote()

    Регулярное выражение заданное вами - недостаточно гибкое. Атрибут href может быть не только самым первым атрибутом в теге <a> и после него может отсутствовать пробел.
    Ответ написан
    7 комментариев