[wp-trac] [WordPress Trac] #40933: Improvements for get_file_data() function

WordPress Trac noreply at wordpress.org
Tue Jun 6 20:28:39 UTC 2017


#40933: Improvements for get_file_data() function
-------------------------+-----------------------------
 Reporter:  Tkama        |      Owner:
     Type:  enhancement  |     Status:  new
 Priority:  normal       |  Milestone:  Awaiting Review
Component:  Formatting   |    Version:  4.7.5
 Severity:  normal       |   Keywords:
  Focuses:  template     |
-------------------------+-----------------------------
 It seams as a bug or as imperfection at least.

 I try to explain in example.

 Assume we have such comments in file:

 {{{#!php
 <?php
 /*
 Plugin Name: My plug
 Version: 1.0
 */

 // and trying to get file data like:
 $data = get_file_data( __FILE__, ['ver'=>'Version'] );
 echo $data['ver']; //> 1.0
 }}}

 This is works as we need.

 BUT if we change comments a little, the get_file_data() becomes broken:

 {{{#!php
 <?php
 /*
 Plugin Name : My plug
 Version     : 1.0
 */

 // and trying to get file data like^
 $data = get_file_data( __FILE__, ['ver'=>'Version'] );
 echo $data['ver']; //> ''
 }}}

 All we do just add spaces before `:` to make comments more readable...

 -

 Solution

 I think it's better to improve regular expression of the get_file_data()
 and add `[\t ]*` before `:`

 {{{#!php
 <?php

 if ( preg_match( '/^[ \t\/*#@]*' . preg_quote( $regex, '/' ) .
 ':(.*)$/mi', $file_data, $match ) && $match[1] )

 to

 if ( preg_match( '/^[ \t\/*#@]*' . preg_quote( $regex, '/' ) . '[\t
 ]*:(.*)$/mi', $file_data, $match ) && $match[1] )

 }}}

--
Ticket URL: <https://core.trac.wordpress.org/ticket/40933>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list