Дата фильтрации в PHP DOM

Я хочу заменить всю дату пробелом из извлеченного контента, используя SIMPLE HTML PHP DOM PARSER (simplehtmldom.sourceforge.net). Вот код:

include("simple_html_php_dom.php");
$html = file_get_html("http://freebacklinks.prijm.com"); //example.com
$result = "$html";
$result = preg_replace("/([1-9]|[0-2][0-9]|3[0-1]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4}/", " ", $result);
$result = preg_replace("/(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ([1-9]|[0-2][0-9]|3[0-1]) [0-9]{4}/", " ", $result);
echo $result;

Итак, здесь все данные даты, такие как: 01 Jan 2004 или Jan 01 2004 или Dec 12 14, должны быть заменены пробелом... Но эта дата не заменяется пробелом.. Что теперь делать?
Вот пример, показывающий, как это будет работать.. http://codepad.org/lAuHW565 но почему это не работает в парсере PHP Simple HTML DOM


person Max Muller    schedule 13.11.2012    source источник
comment
Я действительно запутался в ваших ссылках на DOM... Кажется, вы работаете с простыми строками. Как выглядит $result?   -  person Álvaro González    schedule 13.11.2012
comment
@ ÁlvaroG.Vicario, он будет получать полный контент со страницы.   -  person Max Muller    schedule 13.11.2012
comment
Вот пример, показывающий, как это будет работать. codepad.org/lAuHW565   -  person Max Muller    schedule 13.11.2012


Ответы (1)


Вы пытаетесь заменить объект SimpleHTML, что невозможно (это объект, а не строка). Что вам нужно сделать, это сначала получить HTML, затем заменить, а затем превратить его в SimpleHTML с помощью функции str_get_html.

<?php
    include("simple_html_php_dom.php");

    //Start with getting the pure HTML and replacing in that (don't use SimpleHTMLPHP for this)
    $html = file_get_contents("http://freebacklinks.prijm.com"); //example.com
    $html= preg_replace("/([1-9]|[0-2][0-9]|3[0-1])\s+(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s+[0-9]{4}/", " ", $html);
    $html = preg_replace("/(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s+([1-9]|[0-2][0-9]|3[0-1])\s+[0-9]{4}/", " ", $html);

    //Now create the $result variable:
    $result = str_get_html($html);
    echo $result;
?>
person h2ooooooo    schedule 13.11.2012
comment
@MaxMuller Вы правы - моя ошибка - я прочитал это как file_get_contents, хотя это было file_get_html. Я изменил код, чтобы отразить вашу проблему. - person h2ooooooo; 13.11.2012
comment
что такое OP, и можете ли вы проверить мой новый поток для этого :) .com/questions/13380517/preg-replace-not-working спасибо - person Max Muller; 14.11.2012
comment
@MaxMuller OP - это исходное сообщение. Почему это не работает для вас? Что содержит $html? Можете ли вы опубликовать АКТУАЛЬНЫЙ код (с реальным источником, а не только пример домена)? - person h2ooooooo; 14.11.2012
comment
хорошо, спасибо за добрые руки :), предположим, можно заменить все эти даты пробелом с этой страницы prijom.com/posts/best-plugins-collection-for-drupal-7.php , я пытаюсь заменить всю дату пробелом при извлечении контента с этой страницы. .этот код не работает для этой страницы :( вы можете помочь? - person Max Muller; 15.11.2012
comment
@MaxMuller Это потому, что если вы на самом деле посмотрите на источник страницы, вы обнаружите, что даты Apr 14 2008, Sep 29 2011 и т. д., что означает, что они (по какой-то причине) поместили ДВА пробела между датой и годом. Я отредактировал регулярное выражение для поддержки нескольких пробелов (или вкладок и т. д.), используя \s+, что означает (пробел/табуляция/разрыв строки), повторяющийся 1 или более раз (это то, что означает +. - person h2ooooooo; 15.11.2012