php regexp警告:preg_match_all():未知的修饰符']'

时间:2013-05-20 10:54:53

标签: php regex

        $p5p6patterns = array(
            "/(\d{2,3}(?:[\.,]\d)?)[\\\\/](\d{2,2}(?:[\.,]\d)?)\D/ui", //62.2/43.2  43/34 34\23
            "/(\d{2,3}(?:[\.,] ?\d)?)[\\\\/](\d{2,2}(?:[\.,] ?\d)?)\D/ui", // 51, 2/30, 5/11, 8
            "/\D(\d{2,3}(?:[\.,]\d)?) ?[\\\\/] ?(\d{2,2}(?:[\.,]\d)?)\D/ui", //62.2 / 43.2 / 7.4
            "/Общая\sплощадь\s\-\s(\d{1,2}(?:[\.,]?\d)?)\sкв\.м\.\sжилая\s\-\s(\d{1,2}(?:[\.,]?\d)?)\sкв\.м\./ui"// Общая площадь - 74.6 кв.м. жилая - 29.8 кв.м.
        );
  

警告:preg_match_all():未知修饰符']'

2 个答案:

答案 0 :(得分:0)

测试此放置\\\\\/]而不是\\\\/]

$p5p6patterns = array(
        "/(\d{2,3}(?:[\.,]\d)?)[\\\\\/](\d{2,2}(?:[\.,]\d)?)\D/ui", //62.2/43.2  43/34 34\23
        "/(\d{2,3}(?:[\.,] ?\d)?)[\\\\\/](\d{2,2}(?:[\.,] ?\d)?)\D/ui", // 51, 2/30, 5/11, 8
        "/\D(\d{2,3}(?:[\.,]\d)?) ?[\\\\\/] ?(\d{2,2}(?:[\.,]\d)?)\D/ui", //62.2 / 43.2 / 7.4
        "/Общая\sплощадь\s\-\s(\d{1,2}(?:[\.,]?\d)?)\sкв\.м\.\sжилая\s\-\s(\d{1,2}(?:[\.,]?\d)?)\sкв\.м\./ui"// Общая площадь - 74.6 кв.м. жилая - 29.8 кв.м.
    );

preg_match_all()未将模式作为数组

int preg_match_all ( string $pattern , string $subject [, array &$matches [, int $flags = PREG_PATTERN_ORDER [, int $offset = 0 ]]] )

答案 1 :(得分:0)

您的问题是这部分:[\\\\/]

\\\\对单个字面反斜杠进行编码。因此,以下/不会被转义,结束正则表达式 - 并告诉正则表达式编译器将]解释为模式修饰符。

如果你想匹配反斜杠和斜杠,可以使用[\\\\\/];如果你只想匹配斜杠,可以使用\/