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
|
|
|
|