@@ -35,10 +35,8 @@ public function __construct($fileLinkFormat, $rootDir, $charset)
35
35
{
36
36
$ fileLinkFormat = $ fileLinkFormat ?: ini_get ('xdebug.file_link_format ' ) ?: get_cfg_var ('xdebug.file_link_format ' );
37
37
if ($ fileLinkFormat && !is_array ($ fileLinkFormat )) {
38
- $ i = max (strpos ($ fileLinkFormat , '%f ' ), strpos ($ fileLinkFormat , '%l ' ));
39
- $ i = strpos ($ fileLinkFormat , '#" ' , $ i ) ?: strlen ($ fileLinkFormat );
40
- $ fileLinkFormat = array (substr ($ fileLinkFormat , 0 , $ i ), substr ($ fileLinkFormat , $ i + 1 ));
41
- $ fileLinkFormat [1 ] = @json_decode ('{ ' .$ fileLinkFormat [1 ].'} ' , true ) ?: array ();
38
+ $ i = strpos ($ f = $ fileLinkFormat , '& ' , max (strrpos ($ f , '%f ' ), strrpos ($ f , '%l ' ))) ?: strlen ($ f );
39
+ $ fileLinkFormat = array (substr ($ f , 0 , $ i )) + preg_split ('/&([^>]++)>/ ' , substr ($ f , $ i ), -1 , PREG_SPLIT_DELIM_CAPTURE );
42
40
}
43
41
$ this ->fileLinkFormat = $ fileLinkFormat ;
44
42
$ this ->rootDir = str_replace ('\\' , '/ ' , $ rootDir ).'/ ' ;
@@ -193,9 +191,9 @@ public function formatFile($file, $line, $text = null)
193
191
public function getFileLink ($ file , $ line )
194
192
{
195
193
if ($ this ->fileLinkFormat && is_file ($ file )) {
196
- foreach ($ this ->fileLinkFormat [1 ] as $ k => $ v ) {
197
- if (0 === strpos ($ file , $ k )) {
198
- $ file = substr_replace ($ file , $ v , 0 , strlen ($ k ));
194
+ for ($ i = 1 ; isset ( $ this ->fileLinkFormat [$ i ]); ++ $ i ) {
195
+ if (0 === strpos ($ file , $ k = $ this -> fileLinkFormat [ $ i ++] )) {
196
+ $ file = substr_replace ($ path , $ this -> fileLinkFormat [ $ i ] , 0 , strlen ($ k ));
199
197
break ;
200
198
}
201
199
}
0 commit comments