сценарий оболочки для добавления скобок вокруг совпадений регулярных выражений после подтверждения пользователя - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть дерево файлов, содержащее тысячи файлов php.Я хочу уменьшить усилия, необходимые для обновления до PHP7.2, теперь это PHP5.2 - PHP5.5.Поэтому я хочу начать с автоматической замены некоторого синтаксиса.

Первый измененный синтаксис, который я хочу автоматически заменить, - это массивы, которые обращаются к столбцу по имени.В PHP 7.2 должны быть кавычки вокруг имени столбца.Я нашел команду grep, чтобы найти множество совпадений:

grep -rIC 2 "\$[A-Za-z]\{1,\}\[[A-Za-z]\{1,\}\]"

Результаты:

wws/tools/ttman001M0102.php-}
wws/tools/ttman001M0102.php:if($operator[osno]!=""){
wws/tools/ttman001M0102.php:    $where.=" and ".getWhereAnweisung("t10.osno",'',$operator[osno],$suche[osno]);
wws/tools/ttman001M0102.php-}
wws/tools/mwtxt_100L0100.php-while($r=$a->getNextRow()){
wws/tools/mwtxt_100L0100.php:   $r[txta]=htmlentities(substr($r[txta],0,40),ENT_QUOTES,ini_get("default_charset"));
wws/tools/mwtxt_100L0100.php-  $cust_array[$i]= $r;
wws/tools/updates.php-  {
wws/tools/updates.php:          //if(confirm('<?php  echo $label[a]?>'))
wws/tools/updates.php-  {
wws/tools/updates.php:          //if(confirm('<?php  echo $label[a]?>'))
wws/tools/mwtxt_103M0100.php-}
wws/tools/mwtxt_103M0100.php:if($suche[doku]!="")
wws/tools/mwtxt_103M0100.php:   $where.=" (dsca like '%".addslashes($suche[doku])."%' or doku like '".addslashes($suche[doku])."%') and ";
wws/tools/mwtxt_103M0100.php-if($sort_field)
wws/tools/mwtxt_103M0100.php-while($r=$Abf->getNextRow()){
wws/tools/mwtxt_103M0100.php:   $r[dsca]=htmlentities($r[dsca],ENT_QUOTES,ini_get("default_charset"));
wws/tools/mwtxt_103M0100.php-  $cust_array[$i]= $r;
wws/tools/mwtol_000M0000.php-  while($r=db_fetch_row(Array($result,"DB_GETMODE_ASSOC"))){
wws/tools/mwtol_000M0000.php:    $mhein_040 = new query_select("select * from mhein_040 where orno='$r[liid]' and mndn = '".$_SESSION['SES_CLIENT']."'");
wws/tools/mwtol_000M0000.php-    $kont=new CRM_Vorgang();
wws/tools/mwtol_000M0000.php-    $kont->message=array('meid'=>'mwdoc_002fristmhein_040invn','dspr_usid'=>array('mhein_040usid'=>$mhein_040->row[usid]),
wws/tools/mwtol_000M0000.php:    'text'=>'<a href="javascript:window.open(\'../distribution/mhein_040M0000.php?glob_order_no='.$r[liid].'&aktion=invn&invn='.$r[bnum].'\');void(0);">'.
wws/tools/mwtol_000M0000.php:        get_labelInLanguage('eka',$_SESSION['global_lang']).' '.$r[liid].
wws/tools/mwtol_000M0000.php:        get_labelInLanguage('re',$_SESSION['global_lang']).' '.$r[bnum].'</a>');
wws/tools/mwtol_000M0000.php-    $kont->crm_send_saved_message();
wws/tools/mwtol_000M0000.php-      $sql="select grou from mpart_003
wws/tools/mwtol_000M0000.php:            where item='$feld[item]' and tabl='msser_201' and grou in ('1','2','3') and mndn = '".$_SESSION['SES_CLIENT']."'";
wws/tools/mwtol_000M0000.php-      $gr=new query_select($sql);

, которые уже выводят подходящее отображение соответствующего кода.Я хочу передать эти результаты в bash-скрипт, который попросит меня заменить, нажимая y или n для каждого случая.Это хороший подход или может быть лучше, чтобы ускорить процесс?

1 Ответ

0 голосов
/ 06 февраля 2019

Существуют такие инструменты, как PHP-CS-Fixer и EasyCodingStandard , которые понимают синтаксис PHP и могут безопасно обновлять большое количество потенциальных стилей и исправлений.

Например, с ECS для обновления с array() на короткие массивы '[]':

services:
    PhpCsFixer\Fixer\ArrayNotation\ArraySyntaxFixer:
        syntax: short
...