@mina_rina

Как удалить из базы данных mysql wordpress определенные ссылки с помощью php или может как то иначе?

Есть вот такой код
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(
        /*Тут куча ссылок по типу этих:*/
        'http://www.site.ru/',
        'http://www.site2.ru',
        'http://www.site2.ru/goods/kuhonnyy-utvar.html/',
        'http://www.site3.ru/wto-to'
        );

        foreach($links_mass as $link) {
        $pattern = '/<a([^>]*)href="' . preg_quote($link, '/') . '([^"]*)"([^>]*)>|<\/a>/i';
        $new_content = preg_replace ($pattern, "", $content);
    }   

    $new_post = array();
    $new_post['ID'] = $id;
    $new_post['post_content'] = $new_content;
    wp_update_post( $new_post );
}}
add_action ('init', 'links_remove');


Но почему то ссылки не удаляются, а наоборот анкор ссылки забирает в себя весь текст следующий после ссылки, до того как не появится новая ссылка. Собственно, в чем проблема? Заранее всем спасибо.
  • Вопрос задан
  • 284 просмотра
Пригласить эксперта
Ответы на вопрос 1
daager
@daager
Если у вас есть проблема и вы решили еще с помощью регулярки, то у вас две проблемы)
Регулярка у вас шибко путанная, попробуйте такую (.*<\/a>)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы