Completed
Push — master ( 96d38e...7ae454 )
by Wim
9s
created

preg_replace_e_modifier.php ➔ XRegeXe()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 0
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
<?php
2
3
$Source = "anything";
4
$Replace = "anything";
5
6
///////////// No warning generated:
7
8
// Different quote styles.
9
preg_replace("/double-quoted/", $Replace, $Source);
10
preg_replace('/single-quoted/', $Replace, $Source);
11
12
// Different regex markers.
13
preg_replace('#hash-chars (common)#', $Replace, $Source);
14
preg_replace('!exclamations (why not?!', $Replace, $Source);
15
16
// Safe modifiers
17
preg_replace('/some text/mS', $Replace, $Source);
18
preg_replace('#some text#gi', $Replace, $Source);
19
20
// E modifier doesn't exist, but should not trigger error.
21
preg_replace('//E', $Replace, $Source);
22
23
// Multi-line example (issue #83)
24
$text = preg_replace(
25
    '/(?<!\\\\)     # not preceded by a backslash
26
      <             # an open bracket
27
      (             # start capture
28
        \/?         # optional backslash
29
        collapse    # the string collapse
30
        [^>]*       # everything up to the closing angle bracket; note that you cannot use one inside the tag!
31
      )             # stop capture
32
      >             # close bracket
33
    /ix',
34
    '[$1]',
35
    $text
36
  );
37
38
// Multi-line with /e in comments.
39
preg_replace(
40
        '/.*     # /e in a comment
41
        /x',
42
    $Replace, $Source);
43
44
// Escaped /e
45
preg_replace('/\/e/', $Replace, $Source);
46
47
///////////// Warning generated:
48
49
// Different quote styles.
50
preg_replace("/double-quoted/e", $Replace, $Source);
51
preg_replace('/single-quoted/e', $Replace, $Source);
52
53
// Different regex markers.
54
preg_replace('#hash-chars (common)#e', $Replace, $Source);
55
preg_replace('!exclamations (why not?!e', $Replace, $Source);
56
57
// Other modifiers with /e
58
preg_replace('/some text/emS', $Replace, $Source);
59
preg_replace('/some text/meS', $Replace, $Source);
60
preg_replace('/some text/mSe', $Replace, $Source);
61
62
// Multi-line example (issue #83)
63
$text = preg_replace(
64
    '/(?<!\\\\)     # not preceded by a backslash
65
      <             # an open bracket
66
      (             # start capture
67
        \/?         # optional backslash
68
        collapse    # the string collapse
69
        [^>]*       # everything up to the closing angle bracket; note that you cannot use one inside the tag!
70
      )             # stop capture
71
      >             # close bracket
72
    /iex',
73
    '[$1]',
74
    $text
75
  );
76
77
// Multi-line with /e in comments.
78
preg_replace(
79
        '/.*     # /e in a comment
80
        /xe',
81
    $Replace, $Source);
82
83
// Escaped /e
84
preg_replace('/\/e/e', $Replace, $Source);
85
86
///////////// Untestable - should not generate an error.
87
88
$Regex = "/anything/";
89
define("X_REGEX_Xe", "/anything/");
90
function XRegeXe() {
91
    return "/anything/";
92
}
93
94
preg_replace($Regex, $Replace, $Source);
95
preg_replace(XRegeXe(), $Replace, $Source);
96
preg_replace(X_REGEX_Xe, $Replace, $Source);
97
98
// Using bracket delimiters
99
preg_replace('{\d}e', $Replace, $Source); //bad
100
preg_replace('{\d{2}}e', $Replace, $Source); //bad
101
preg_replace('{\d{2}e}', $Replace, $Source); //good
102
preg_replace('\d{2}e', $Replace, $Source); // good
103
preg_replace('{^fopen(.*?): }', $Replace, $Source); //good - monolog example
104