Using regex: SimplePie regex errors on newest questions tagged regex – Stack Overflow

3 dev version of SimplePie]1 on xampp with PHP 5.3.

I am able to get an RSS feed and display it but I get these errors for every item fetched:

Warning: preg_match() [function.preg-match]: Compilation failed: nothing to repeat at offset 562 in C:\xampp\htdocs\simplepie.php on line 5877

Warning: preg_match() [function.preg-match]: Compilation failed: nothing to repeat at offset 509 in C:\xampp\htdocs\simplepie.php on line 5965

Warning: preg_match() [function.preg-match]: Compilation failed: nothing to repeat at offset 509 in C:\xampp\htdocs\simplepie.php on line 6031

The functions where the errors occur:

    /**
 * Parse RFC2822's date format
 *
 * @access protected
 * @return int Timestamp
 */
public function date_rfc2822($date)
{
    static $pcre;
    if (!$pcre)
    {
        $wsp = '[\x09\x20]';
        $fws = '(?:' . $wsp . '+|' . $wsp . '*(?:\x0D\x0A' . $wsp . '+)+)';
        $optional_fws = $fws . '?';
        $day_name = $this->day_pcre;
        $month = $this->month_pcre;
        $day = '([0-9]{1,2})';
        $hour = $minute = $second = '([0-9]{2})';
        $year = '([0-9]{2,4})';
        $num_zone = '([+\-])([0-9]{2})([0-9]{2})';
        $character_zone = '([A-Z]{1,5})';
        $zone = '(?:' . $num_zone . '|' . $character_zone . ')';
        $pcre = '/(?:' . $optional_fws . $day_name . $optional_fws . ',)?' . $optional_fws . $day . $fws . $month . $fws . $year . $fws . $hour . $optional_fws . ':' . $optional_fws . $minute . '(?:' . $optional_fws . ':' . $optional_fws . $second . ')?' . $fws . $zone . '/i';
    }
    if (preg_match($pcre, $this->remove_rfc2822_comments($date), $match))

/**
 * Parse RFC850's date format
 *
 * @access protected
 * @return int Timestamp
 */
public function date_rfc850($date)
{
    static $pcre;
    if (!$pcre)
    {
        $space = '[\x09\x20]+';
        $day_name = $this->day_pcre;
        $month = $this->month_pcre;
        $day = '([0-9]{1,2})';
        $year = $hour = $minute = $second = '([0-9]{2})';
        $zone = '([A-Z]{1,5})';
        $pcre = '/^' . $day_name . ',' . $space . $day . '-' . $month . '-' . $year . $space . $hour . ':' . $minute . ':' . $second . $space . $zone . '$/i';
    }
    if (preg_match($pcre, $date, $match))

/**
 * Parse C99's asctime()'s date format
 *
 * @access protected
 * @return int Timestamp
 */
public function date_asctime($date)
{
    static $pcre;
    if (!$pcre)
    {
        $space = '[\x09\x20]+';
        $wday_name = $this->day_pcre;
        $mon_name = $this->month_pcre;
        $day = '([0-9]{1,2})';
        $hour = $sec = $min = '([0-9]{2})';
        $year = '([0-9]{4})';
        $terminator = '\x0A?\x00?';
        $pcre = '/^' . $wday_name . $space . $mon_name . $space . $day . $space . $hour . ':' . $min . ':' . $sec . $space . $year . $terminator . '$/i';
    }
    if (preg_match($pcre, $date, $match))

The lines referenced by the error is the last if expression for each function (you can see full code here).

I think there is just bad regex in each $pcre for each function.

Thank you

See Answers


source: http://stackoverflow.com/questions/9827859/simplepie-regex-errors
Using regex: using-regex



online applications demo