php - 正则表达式在测试文件中工作,而不是在程序中工作(HTTP 原始响应)

标签 php regex

我正在尝试调试正则表达式,但我终究无法弄清楚为什么它在测试文件中有效,但在其他地方却无效。

我正在接收原始 HTTP 响应,并已解析出感兴趣的部分:

UID:5F12F7DA-10B0-4EE3-820D-B56F0B2FC153
DTSTAMP:20120408T041113Z
CLASS:PUBLIC
CREATED:20120408T041113Z
DESCRIPTION:Testfghfghfghfghfghfghfghfghfghfghfghfghfghfghfgh
DTSTART;TZID=America/New_York:20120410T000000
DTEND;TZID=America/New_York:20120419T010000
LAST-MODIFIED:20120408T041228Z
LOCATION:Philadelphia\, PA
SEQUENCE:1
SUMMARY:Test
TRANSP:OPAQUE

每一行都以 (hex:0D0A) 结尾,应该是 '\r\n'。

这是对摘要的呼吁:

$this->Summary =\Extract\Extract::GetSummary($vevent);

函数如下:

public static function GetSummary($String) {
            $re1='.*?'; # Non-greedy match on filler
            $re2='(SUMMARY)';   # Word 1
            $re3='(:)'; # Any Single Character 1
            $re4='(.*?)';   # Non-greedy match on filler
            $re5='(\r\n)';  # Any Single Character 2

            if ($c=preg_match_all ("/".$re1.$re2.$re3.$re4.$re5."/is", $String, $matches))
            {

                $word1=$matches[1][0];
                $c1=$matches[2][0];
                $word2=$matches[3][0];
                return $word2;
            }

        }

Preg_match_all 在我的测试文件中评估为 true,但在我的程序中评估为 false。有任何想法吗?它不喜欢原始字符串的某些内容,或者未将其复制到我的测试文件中(因此我找不到它)?

最佳答案

尝试只使用换行符作为最后的匹配:

function GetSummary($String) {
  $re1='.*?';       // Non-greedy match on filler
  $re2='(SUMMARY)'; // Token
  $re3='(:)';       // Separator
  $re4='(.*?)';     // Content
  $re5='\n';        // End of line

  if ($c=preg_match_all ("/".$re1.$re2.$re3.$re4.$re5."/is", $String, $matches))
  {
    $word1=$matches[1][0];
    $c1=$matches[2][0];
    $word2=$matches[3][0];
    return $word2;
  }
}

演示:http://ideone.com/zHr2X

如果这仍然不起作用,您可以尝试使用行尾标记 $,或者在调用正则表达式之前清理行尾。

关于php - 正则表达式在测试文件中工作,而不是在程序中工作(HTTP 原始响应),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10097346/

相关文章:

javascript - 从文本中消除特定模式

c# - 正则表达式匹配整个单词和标点符号

php - 使用 PHP 输出谷歌搜索结果?

php - 在一个 PHP 文件中运行 2 个 MySQL 更新查询

javascript - api 响应返回 "↵"

python - 如何获取以数字开头作为行首并以 5 位数字结尾的字符串

php - php中的数组冲突

php - 基于应用程序的错误记录/处理?

python - 如何在Python中使用正则表达式分割/etc/network/interfaces

javascript - 制作与 Javascript 字符串匹配的 Regex 对象。讲解方法