Replace “//” with “/* */” in PHP? [closed]

我的未来我决定 提交于 2020-01-17 18:11:24

问题


I'm working in a code to minify html/css/js but i got a problem.

I need to replace // with /* and */.

Example:

$(funcion(){
// Do something
});

Replace to:

$(funcion(){
/* Do something */
});

How do that?


回答1:


First, as was pointed out in the comments, if you're looking to reduce the size, comments should be stripped.

function convertComment(str){
   if(str.substring(0,2) === '//'){
       str = '/*' + str.substring(2) + ' */';
   } else {
       str = false;
   }
   return str;
}

Your example code looked like JQuery, so if you were looking for PHP, here is that version:

function convertComment($s){
   if(substr($s,0,2) == '//'){
       $s = '/*' . substr($s,2) . ' */';
   } else {
       $s = false;
   }
   return $s;
}



回答2:


You could use this regex:

/(?m)^\h*\/\/(.*)$/

then replace with

/*$1*/

to replace each line that starts with // or any amount of spaces before the //.

Regex101 Demo: https://regex101.com/r/oE0rY0/1

The (?m) enables the m modifier which makes ^ and $ match each line rather than the whole string. The \h* is zero or more spaces. The \/ is escaping the first / since that is the delimiter (could be any delimiter then wouldn't need to escape, http://php.net/manual/en/regexp.reference.delimiters.php). Then the .* is every character until the end of the line $. The () captures the found value after the //.

PHP Usage:

$string = '//replace me please
dont touch http://www.google.com
or //this one
  //but this one do as well';
$regex = '/^\h*\/\/(.*)$/m';
echo preg_replace($regex, '/*$1*/', $string);

Output:

/*replace me please*/
dont touch http://www.google.com
or //this one
/*but this one do as well*/

PHP Demo: https://ideone.com/j7Xj4L



来源:https://stackoverflow.com/questions/32891256/replace-with-in-php

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!