@@ -136,10 +136,10 @@ discard block |
||
| 136 | 136 | // +---------------------------------------------------------------------- |
| 137 | 137 | |
| 138 | 138 | // 默认跳转页面对应的模板文件 |
| 139 | - 'dispatch_success_tmpl' => __DIR__ . '/tpl/dispatch_jump.tpl', |
|
| 140 | - 'dispatch_error_tmpl' => __DIR__ . '/tpl/dispatch_jump.tpl', |
|
| 139 | + 'dispatch_success_tmpl' => __DIR__.'/tpl/dispatch_jump.tpl', |
|
| 140 | + 'dispatch_error_tmpl' => __DIR__.'/tpl/dispatch_jump.tpl', |
|
| 141 | 141 | // 异常页面的模板文件 |
| 142 | - 'exception_tmpl' => __DIR__ . '/tpl/think_exception.tpl', |
|
| 142 | + 'exception_tmpl' => __DIR__.'/tpl/think_exception.tpl', |
|
| 143 | 143 | // 错误显示信息,非调试模式有效 |
| 144 | 144 | 'error_message' => '页面错误!请稍后再试~', |
| 145 | 145 | // 显示错误信息 |
@@ -199,7 +199,7 @@ discard block |
||
| 199 | 199 | 'trace' => [ |
| 200 | 200 | // 内置Html Console 支持扩展 |
| 201 | 201 | 'type' => 'Html', |
| 202 | - 'file' => __DIR__ . '/tpl/page_trace.tpl', |
|
| 202 | + 'file' => __DIR__.'/tpl/page_trace.tpl', |
|
| 203 | 203 | ], |
| 204 | 204 | |
| 205 | 205 | // +---------------------------------------------------------------------- |
@@ -11,7 +11,7 @@ |
||
| 11 | 11 | namespace think; |
| 12 | 12 | |
| 13 | 13 | // 载入Loader类 |
| 14 | -require __DIR__ . '/library/think/Loader.php'; |
|
| 14 | +require __DIR__.'/library/think/Loader.php'; |
|
| 15 | 15 | |
| 16 | 16 | // 注册自动加载 |
| 17 | 17 | Loader::register(); |
@@ -61,7 +61,7 @@ discard block |
||
| 61 | 61 | protected function getEnv($name, $default = null, $php_prefix = true) |
| 62 | 62 | { |
| 63 | 63 | if ($php_prefix) { |
| 64 | - $name = 'PHP_' . $name; |
|
| 64 | + $name = 'PHP_'.$name; |
|
| 65 | 65 | } |
| 66 | 66 | |
| 67 | 67 | $result = getenv($name); |
@@ -98,7 +98,7 @@ discard block |
||
| 98 | 98 | foreach ($env as $key => $val) { |
| 99 | 99 | if (is_array($val)) { |
| 100 | 100 | foreach ($val as $k => $v) { |
| 101 | - $this->data[$key . '_' . strtoupper($k)] = $v; |
|
| 101 | + $this->data[$key.'_'.strtoupper($k)] = $v; |
|
| 102 | 102 | } |
| 103 | 103 | } else { |
| 104 | 104 | $this->data[$key] = $val; |
@@ -55,21 +55,21 @@ discard block |
||
| 55 | 55 | $mem = number_format((memory_get_usage() - Container::get('app')->getBeginMem()) / 1024, 2); |
| 56 | 56 | |
| 57 | 57 | if ($request->host()) { |
| 58 | - $uri = $request->protocol() . ' ' . $request->method() . ' : ' . $request->url(true); |
|
| 58 | + $uri = $request->protocol().' '.$request->method().' : '.$request->url(true); |
|
| 59 | 59 | } else { |
| 60 | - $uri = 'cmd:' . implode(' ', $_SERVER['argv']); |
|
| 60 | + $uri = 'cmd:'.implode(' ', $_SERVER['argv']); |
|
| 61 | 61 | } |
| 62 | 62 | |
| 63 | 63 | // 页面Trace信息 |
| 64 | 64 | $base = [ |
| 65 | - '请求信息' => date('Y-m-d H:i:s', $_SERVER['REQUEST_TIME']) . ' ' . $uri, |
|
| 66 | - '运行时间' => number_format($runtime, 6) . 's [ 吞吐率:' . $reqs . 'req/s ] 内存消耗:' . $mem . 'kb 文件加载:' . count(get_included_files()), |
|
| 67 | - '查询信息' => Db::$queryTimes . ' queries ' . Db::$executeTimes . ' writes ', |
|
| 68 | - '缓存信息' => Container::get('cache')->getReadTimes() . ' reads,' . Container::get('cache')->getWriteTimes() . ' writes', |
|
| 65 | + '请求信息' => date('Y-m-d H:i:s', $_SERVER['REQUEST_TIME']).' '.$uri, |
|
| 66 | + '运行时间' => number_format($runtime, 6).'s [ 吞吐率:'.$reqs.'req/s ] 内存消耗:'.$mem.'kb 文件加载:'.count(get_included_files()), |
|
| 67 | + '查询信息' => Db::$queryTimes.' queries '.Db::$executeTimes.' writes ', |
|
| 68 | + '缓存信息' => Container::get('cache')->getReadTimes().' reads,'.Container::get('cache')->getWriteTimes().' writes', |
|
| 69 | 69 | ]; |
| 70 | 70 | |
| 71 | 71 | if (session_id()) { |
| 72 | - $base['会话信息'] = 'SESSION_ID=' . session_id(); |
|
| 72 | + $base['会话信息'] = 'SESSION_ID='.session_id(); |
|
| 73 | 73 | } |
| 74 | 74 | |
| 75 | 75 | $info = Container::get('debug')->getFile(true); |
@@ -127,9 +127,9 @@ discard block |
||
| 127 | 127 | case '调试': |
| 128 | 128 | $var_type = gettype($m); |
| 129 | 129 | if (in_array($var_type, ['array', 'string'])) { |
| 130 | - $line[] = "console.log(" . json_encode($m) . ");"; |
|
| 130 | + $line[] = "console.log(".json_encode($m).");"; |
|
| 131 | 131 | } else { |
| 132 | - $line[] = "console.log(" . json_encode(var_export($m, 1)) . ");"; |
|
| 132 | + $line[] = "console.log(".json_encode(var_export($m, 1)).");"; |
|
| 133 | 133 | } |
| 134 | 134 | break; |
| 135 | 135 | case '错误': |
@@ -143,7 +143,7 @@ discard block |
||
| 143 | 143 | $line[] = "console.log(\"%c{$msg}\", \"{$style}\");"; |
| 144 | 144 | break; |
| 145 | 145 | default: |
| 146 | - $m = is_string($key) ? $key . ' ' . $m : $key + 1 . ' ' . $m; |
|
| 146 | + $m = is_string($key) ? $key.' '.$m : $key + 1.' '.$m; |
|
| 147 | 147 | $msg = json_encode($m); |
| 148 | 148 | $line[] = "console.log({$msg});"; |
| 149 | 149 | break; |
@@ -55,19 +55,19 @@ |
||
| 55 | 55 | |
| 56 | 56 | // 页面Trace信息 |
| 57 | 57 | if ($request->host()) { |
| 58 | - $uri = $request->protocol() . ' ' . $request->method() . ' : ' . $request->url(true); |
|
| 58 | + $uri = $request->protocol().' '.$request->method().' : '.$request->url(true); |
|
| 59 | 59 | } else { |
| 60 | - $uri = 'cmd:' . implode(' ', $_SERVER['argv']); |
|
| 60 | + $uri = 'cmd:'.implode(' ', $_SERVER['argv']); |
|
| 61 | 61 | } |
| 62 | 62 | $base = [ |
| 63 | - '请求信息' => date('Y-m-d H:i:s', $_SERVER['REQUEST_TIME']) . ' ' . $uri, |
|
| 64 | - '运行时间' => number_format($runtime, 6) . 's [ 吞吐率:' . $reqs . 'req/s ] 内存消耗:' . $mem . 'kb 文件加载:' . count(get_included_files()), |
|
| 65 | - '查询信息' => Db::$queryTimes . ' queries ' . Db::$executeTimes . ' writes ', |
|
| 66 | - '缓存信息' => Container::get('cache')->getReadTimes() . ' reads,' . Container::get('cache')->getWriteTimes() . ' writes', |
|
| 63 | + '请求信息' => date('Y-m-d H:i:s', $_SERVER['REQUEST_TIME']).' '.$uri, |
|
| 64 | + '运行时间' => number_format($runtime, 6).'s [ 吞吐率:'.$reqs.'req/s ] 内存消耗:'.$mem.'kb 文件加载:'.count(get_included_files()), |
|
| 65 | + '查询信息' => Db::$queryTimes.' queries '.Db::$executeTimes.' writes ', |
|
| 66 | + '缓存信息' => Container::get('cache')->getReadTimes().' reads,'.Container::get('cache')->getWriteTimes().' writes', |
|
| 67 | 67 | ]; |
| 68 | 68 | |
| 69 | 69 | if (session_id()) { |
| 70 | - $base['会话信息'] = 'SESSION_ID=' . session_id(); |
|
| 70 | + $base['会话信息'] = 'SESSION_ID='.session_id(); |
|
| 71 | 71 | } |
| 72 | 72 | |
| 73 | 73 | $info = Container::get('debug')->getFile(true); |
@@ -76,21 +76,21 @@ discard block |
||
| 76 | 76 | if ($this->app->isDebug()) { |
| 77 | 77 | $runtime = round(microtime(true) - $this->app->getBeginTime(), 10); |
| 78 | 78 | $reqs = $runtime > 0 ? number_format(1 / $runtime, 2) : '∞'; |
| 79 | - $time_str = ' [运行时间:' . number_format($runtime, 6) . 's][吞吐率:' . $reqs . 'req/s]'; |
|
| 79 | + $time_str = ' [运行时间:'.number_format($runtime, 6).'s][吞吐率:'.$reqs.'req/s]'; |
|
| 80 | 80 | $memory_use = number_format((memory_get_usage() - $this->app->getBeginMem()) / 1024, 2); |
| 81 | - $memory_str = ' [内存消耗:' . $memory_use . 'kb]'; |
|
| 82 | - $file_load = ' [文件加载:' . count(get_included_files()) . ']'; |
|
| 81 | + $memory_str = ' [内存消耗:'.$memory_use.'kb]'; |
|
| 82 | + $file_load = ' [文件加载:'.count(get_included_files()).']'; |
|
| 83 | 83 | |
| 84 | 84 | if (isset($_SERVER['HTTP_HOST'])) { |
| 85 | - $current_uri = $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; |
|
| 85 | + $current_uri = $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; |
|
| 86 | 86 | } else { |
| 87 | - $current_uri = 'cmd:' . implode(' ', $_SERVER['argv']); |
|
| 87 | + $current_uri = 'cmd:'.implode(' ', $_SERVER['argv']); |
|
| 88 | 88 | } |
| 89 | 89 | |
| 90 | 90 | // 基本信息 |
| 91 | 91 | $trace[] = [ |
| 92 | 92 | 'type' => 'group', |
| 93 | - 'msg' => $current_uri . $time_str . $memory_str . $file_load, |
|
| 93 | + 'msg' => $current_uri.$time_str.$memory_str.$file_load, |
|
| 94 | 94 | 'css' => $this->css['page'], |
| 95 | 95 | ]; |
| 96 | 96 | } |
@@ -98,7 +98,7 @@ discard block |
||
| 98 | 98 | foreach ($log as $type => $val) { |
| 99 | 99 | $trace[] = [ |
| 100 | 100 | 'type' => in_array($type, $this->config['expand_level']) ? 'group' : 'groupCollapsed', |
| 101 | - 'msg' => '[ ' . $type . ' ]', |
|
| 101 | + 'msg' => '[ '.$type.' ]', |
|
| 102 | 102 | 'css' => isset($this->css[$type]) ? $this->css[$type] : '', |
| 103 | 103 | ]; |
| 104 | 104 | |
@@ -184,7 +184,7 @@ discard block |
||
| 184 | 184 | ]; |
| 185 | 185 | |
| 186 | 186 | $msg = @json_encode($logs); |
| 187 | - $address = '/' . $client_id; //将client_id作为地址, server端通过地址判断将日志发布给谁 |
|
| 187 | + $address = '/'.$client_id; //将client_id作为地址, server端通过地址判断将日志发布给谁 |
|
| 188 | 188 | |
| 189 | 189 | $this->send($this->config['host'], $msg, $address); |
| 190 | 190 | } |
@@ -257,7 +257,7 @@ discard block |
||
| 257 | 257 | */ |
| 258 | 258 | protected function send($host, $message = '', $address = '/') |
| 259 | 259 | { |
| 260 | - $url = 'http://' . $host . ':' . $this->port . $address; |
|
| 260 | + $url = 'http://'.$host.':'.$this->port.$address; |
|
| 261 | 261 | $ch = curl_init(); |
| 262 | 262 | |
| 263 | 263 | curl_setopt($ch, CURLOPT_URL, $url); |
@@ -92,7 +92,7 @@ discard block |
||
| 92 | 92 | } |
| 93 | 93 | |
| 94 | 94 | if ($this->parent && $this->parent->getFullName()) { |
| 95 | - $this->fullName = $this->parent->getFullName() . ($this->name ? '/' . $this->name : ''); |
|
| 95 | + $this->fullName = $this->parent->getFullName().($this->name ? '/'.$this->name : ''); |
|
| 96 | 96 | } else { |
| 97 | 97 | $this->fullName = $this->name; |
| 98 | 98 | } |
@@ -182,7 +182,7 @@ discard block |
||
| 182 | 182 | |
| 183 | 183 | if ($this->auto) { |
| 184 | 184 | // 自动解析URL地址 |
| 185 | - $result = new UrlDispatch($request, $this, $this->auto . '/' . $url, ['auto_search' => false]); |
|
| 185 | + $result = new UrlDispatch($request, $this, $this->auto.'/'.$url, ['auto_search' => false]); |
|
| 186 | 186 | } elseif ($this->miss && in_array($this->miss->getMethod(), ['*', $method])) { |
| 187 | 187 | // 未匹配所有路由的路由规则处理 |
| 188 | 188 | $result = $this->miss->parseRule($request, '', $this->miss->getRoute(), $url, $this->miss->mergeGroupOptions()); |
@@ -279,11 +279,11 @@ discard block |
||
| 279 | 279 | protected function checkMergeRuleRegex($request, &$rules, $url, $completeMatch) |
| 280 | 280 | { |
| 281 | 281 | $depr = $this->router->config('pathinfo_depr'); |
| 282 | - $url = $depr . str_replace('|', $depr, $url); |
|
| 282 | + $url = $depr.str_replace('|', $depr, $url); |
|
| 283 | 283 | |
| 284 | 284 | foreach ($rules as $key => $item) { |
| 285 | 285 | if ($item instanceof RuleItem) { |
| 286 | - $rule = $depr . str_replace('/', $depr, $item->getRule()); |
|
| 286 | + $rule = $depr.str_replace('/', $depr, $item->getRule()); |
|
| 287 | 287 | if ($depr == $rule && $depr != $url) { |
| 288 | 288 | unset($rules[$key]); |
| 289 | 289 | continue; |
@@ -300,21 +300,21 @@ discard block |
||
| 300 | 300 | continue; |
| 301 | 301 | } |
| 302 | 302 | |
| 303 | - $slash = preg_quote('/-' . $depr, '/'); |
|
| 303 | + $slash = preg_quote('/-'.$depr, '/'); |
|
| 304 | 304 | |
| 305 | - if ($matchRule = preg_split('/[' . $slash . ']<\w+\??>/', $rule, 2)) { |
|
| 305 | + if ($matchRule = preg_split('/['.$slash.']<\w+\??>/', $rule, 2)) { |
|
| 306 | 306 | if ($matchRule[0] && 0 !== strncasecmp($rule, $url, strlen($matchRule[0]))) { |
| 307 | 307 | unset($rules[$key]); |
| 308 | 308 | continue; |
| 309 | 309 | } |
| 310 | 310 | } |
| 311 | 311 | |
| 312 | - if (preg_match_all('/[' . $slash . ']?<?\w+\??>?/', $rule, $matches)) { |
|
| 312 | + if (preg_match_all('/['.$slash.']?<?\w+\??>?/', $rule, $matches)) { |
|
| 313 | 313 | unset($rules[$key]); |
| 314 | 314 | $pattern = array_merge($this->getPattern(), $item->getPattern()); |
| 315 | 315 | $option = array_merge($this->getOption(), $item->getOption()); |
| 316 | 316 | |
| 317 | - $regex[$key] = $this->buildRuleRegex($rule, $matches[0], $pattern, $option, $complete, '_THINK_' . $key); |
|
| 317 | + $regex[$key] = $this->buildRuleRegex($rule, $matches[0], $pattern, $option, $complete, '_THINK_'.$key); |
|
| 318 | 318 | $items[$key] = $item; |
| 319 | 319 | } |
| 320 | 320 | } |
@@ -325,7 +325,7 @@ discard block |
||
| 325 | 325 | } |
| 326 | 326 | |
| 327 | 327 | try { |
| 328 | - $result = preg_match('/^(?:' . implode('|', $regex) . ')/u', $url, $match); |
|
| 328 | + $result = preg_match('/^(?:'.implode('|', $regex).')/u', $url, $match); |
|
| 329 | 329 | } catch (\Exception $e) { |
| 330 | 330 | throw new Exception('route pattern error'); |
| 331 | 331 | } |
@@ -342,7 +342,7 @@ discard block |
||
| 342 | 342 | |
| 343 | 343 | if (!isset($pos)) { |
| 344 | 344 | foreach ($regex as $key => $item) { |
| 345 | - if (0 === strpos(str_replace(['\/', '\-', '\\' . $depr], ['/', '-', $depr], $item), $match[0])) { |
|
| 345 | + if (0 === strpos(str_replace(['\/', '\-', '\\'.$depr], ['/', '-', $depr], $item), $match[0])) { |
|
| 346 | 346 | $pos = $key; |
| 347 | 347 | break; |
| 348 | 348 | } |
@@ -505,7 +505,7 @@ discard block |
||
| 505 | 505 | public function prefix($prefix) |
| 506 | 506 | { |
| 507 | 507 | if ($this->parent && $this->parent->getOption('prefix')) { |
| 508 | - $prefix = $this->parent->getOption('prefix') . $prefix; |
|
| 508 | + $prefix = $this->parent->getOption('prefix').$prefix; |
|
| 509 | 509 | } |
| 510 | 510 | |
| 511 | 511 | return $this->option('prefix', $prefix); |
@@ -79,10 +79,10 @@ discard block |
||
| 79 | 79 | $item = []; |
| 80 | 80 | |
| 81 | 81 | foreach ($array as $val) { |
| 82 | - $item[] = $val . '/<' . (isset($option['var'][$val]) ? $option['var'][$val] : $val . '_id') . '>'; |
|
| 82 | + $item[] = $val.'/<'.(isset($option['var'][$val]) ? $option['var'][$val] : $val.'_id').'>'; |
|
| 83 | 83 | } |
| 84 | 84 | |
| 85 | - $rule = implode('/', $item) . '/' . $last; |
|
| 85 | + $rule = implode('/', $item).'/'.$last; |
|
| 86 | 86 | } |
| 87 | 87 | |
| 88 | 88 | $prefix = substr($rule, strlen($this->name) + 1); |
@@ -95,12 +95,12 @@ discard block |
||
| 95 | 95 | } |
| 96 | 96 | |
| 97 | 97 | if (isset($last) && strpos($val[1], '<id>') && isset($option['var'][$last])) { |
| 98 | - $val[1] = str_replace('<id>', '<' . $option['var'][$last] . '>', $val[1]); |
|
| 98 | + $val[1] = str_replace('<id>', '<'.$option['var'][$last].'>', $val[1]); |
|
| 99 | 99 | } elseif (strpos($val[1], '<id>') && isset($option['var'][$rule])) { |
| 100 | - $val[1] = str_replace('<id>', '<' . $option['var'][$rule] . '>', $val[1]); |
|
| 100 | + $val[1] = str_replace('<id>', '<'.$option['var'][$rule].'>', $val[1]); |
|
| 101 | 101 | } |
| 102 | 102 | |
| 103 | - $this->addRule(trim($prefix . $val[1], '/'), $this->route . '/' . $val[2], $val[0]); |
|
| 103 | + $this->addRule(trim($prefix.$val[1], '/'), $this->route.'/'.$val[2], $val[0]); |
|
| 104 | 104 | } |
| 105 | 105 | |
| 106 | 106 | $this->router->setGroup($origin); |
@@ -66,7 +66,7 @@ discard block |
||
| 66 | 66 | $rule = '/' != $rule ? ltrim($rule, '/') : ''; |
| 67 | 67 | |
| 68 | 68 | if ($this->parent && $prefix = $this->parent->getFullName()) { |
| 69 | - $rule = $prefix . ($rule ? '/' . ltrim($rule, '/') : ''); |
|
| 69 | + $rule = $prefix.($rule ? '/'.ltrim($rule, '/') : ''); |
|
| 70 | 70 | } |
| 71 | 71 | |
| 72 | 72 | if (false !== strpos($rule, ':')) { |
@@ -216,7 +216,7 @@ discard block |
||
| 216 | 216 | |
| 217 | 217 | if (isset($option['ext'])) { |
| 218 | 218 | // 路由ext参数 优先于系统配置的URL伪静态后缀参数 |
| 219 | - $url = preg_replace('/\.(' . $request->ext() . ')$/i', '', $url); |
|
| 219 | + $url = preg_replace('/\.('.$request->ext().')$/i', '', $url); |
|
| 220 | 220 | } |
| 221 | 221 | |
| 222 | 222 | return $url; |
@@ -240,38 +240,38 @@ discard block |
||
| 240 | 240 | $depr = $this->router->config('pathinfo_depr'); |
| 241 | 241 | |
| 242 | 242 | // 检查完整规则定义 |
| 243 | - if (isset($pattern['__url__']) && !preg_match(0 === strpos($pattern['__url__'], '/') ? $pattern['__url__'] : '/^' . $pattern['__url__'] . '/', str_replace('|', $depr, $url))) { |
|
| 243 | + if (isset($pattern['__url__']) && !preg_match(0 === strpos($pattern['__url__'], '/') ? $pattern['__url__'] : '/^'.$pattern['__url__'].'/', str_replace('|', $depr, $url))) { |
|
| 244 | 244 | return false; |
| 245 | 245 | } |
| 246 | 246 | |
| 247 | 247 | $var = []; |
| 248 | - $url = $depr . str_replace('|', $depr, $url); |
|
| 249 | - $rule = $depr . str_replace('/', $depr, $this->rule); |
|
| 248 | + $url = $depr.str_replace('|', $depr, $url); |
|
| 249 | + $rule = $depr.str_replace('/', $depr, $this->rule); |
|
| 250 | 250 | |
| 251 | 251 | if ($depr == $rule && $depr != $url) { |
| 252 | 252 | return false; |
| 253 | 253 | } |
| 254 | 254 | |
| 255 | 255 | if (false === strpos($rule, '<')) { |
| 256 | - if (0 === strcasecmp($rule, $url) || (!$completeMatch && 0 === strncasecmp($rule . $depr, $url . $depr, strlen($rule . $depr)))) { |
|
| 256 | + if (0 === strcasecmp($rule, $url) || (!$completeMatch && 0 === strncasecmp($rule.$depr, $url.$depr, strlen($rule.$depr)))) { |
|
| 257 | 257 | return $var; |
| 258 | 258 | } |
| 259 | 259 | return false; |
| 260 | 260 | } |
| 261 | 261 | |
| 262 | - $slash = preg_quote('/-' . $depr, '/'); |
|
| 262 | + $slash = preg_quote('/-'.$depr, '/'); |
|
| 263 | 263 | |
| 264 | - if ($matchRule = preg_split('/[' . $slash . ']?<\w+\??>/', $rule, 2)) { |
|
| 264 | + if ($matchRule = preg_split('/['.$slash.']?<\w+\??>/', $rule, 2)) { |
|
| 265 | 265 | if ($matchRule[0] && 0 !== strncasecmp($rule, $url, strlen($matchRule[0]))) { |
| 266 | 266 | return false; |
| 267 | 267 | } |
| 268 | 268 | } |
| 269 | 269 | |
| 270 | - if (preg_match_all('/[' . $slash . ']?<?\w+\??>?/', $rule, $matches)) { |
|
| 270 | + if (preg_match_all('/['.$slash.']?<?\w+\??>?/', $rule, $matches)) { |
|
| 271 | 271 | $regex = $this->buildRuleRegex($rule, $matches[0], $pattern, $option, $completeMatch); |
| 272 | 272 | |
| 273 | 273 | try { |
| 274 | - if (!preg_match('/^' . $regex . ($completeMatch ? '$' : '') . '/u', $url, $match)) { |
|
| 274 | + if (!preg_match('/^'.$regex.($completeMatch ? '$' : '').'/u', $url, $match)) { |
|
| 275 | 275 | return false; |
| 276 | 276 | } |
| 277 | 277 | } catch (\Exception $e) { |