0

コードの簡素化について質問があります。

私は持っている

 public function getText($text){
      if(!empty($text)){
          $dom = new DomDocument();
          $dom->loadHTML($text);

          $xpath=new DOMXpath($dom);
          $result = $xpath->query('//a');

          if($result->length > 0){
              $atags=$dom->getElementsByTagName('a');
              foreach($atags as $atag){
                  $style = $atag ->getAttribute('style');
                  $atag->setAttribute('style',$style.' text-decoration:none;color:black;');
              }
              $returnText .= $dom->saveHTML();
              return $returnText;
          }

          $result = $xpath->query('//table');
          if($result->length > 0){
              $tables = $dom->getElementsByTagName('table');              
              $inputs = $dom->getElementsByTagName('input');

              foreach ($inputs as $input) {
                  $input->setAttribute('style','text-align:center;');
              }

              foreach ($tables as $table) {
                  $table->setAttribute('width',500);
                  $table->setAttribute('style','border:2px solid #8C8C8C;text-align:center;table-layout:fixed;');
              }
              $returnText .= $dom->saveHTML();
              return $returnText;
          }
      }
      return $text;
  }

  public function getTextwithIndex($text,$index=''){
      if(!empty($text[$index])){
          $dom = new DomDocument();
          $dom->loadHTML($text[$index]);

          $xpath=new DOMXpath($dom);
          $result = $xpath->query('//a');

          if($result->length > 0){
              $atags=$dom->getElementsByTagName('a');
              foreach($atags as $atag){
                  $style = $atag ->getAttribute('style');
                  $atag->setAttribute('style',$style.' text-decoration:none;color:black;');
              }
              $returnText .= $dom->saveHTML();
              return $returnText;
          }

          $result = $xpath->query('//tbody');
          if($result->length > 0){
              $tbodies = $dom->getElementsByTagName('tbody');
              $cells = $dom->getElementsByTagName('td');
              $inputs = $dom->getElementsByTagName('input');

              foreach ($inputs as $input) {
                  $input->setAttribute('style','text-align:center;');
              }

              foreach ($cells as $cell) {
                  $cell->setAttribute('style','border:1px solid black;');
              }

              foreach ($tbodies as $tbody) {
                  $table = $dom->createElement('table');
                  $table->setAttribute('width',500);
                  $table->setAttribute('style','border:2px solid #8C8C8C;text-align:center;table-layout:fixed;');

                  $tbody->parentNode->replaceChild($table, $tbody);
                  $table->appendChild($tbody);
              }
              $returnText .= $dom->saveHTML();
              return $returnText;
          }
      }
      return $text;
  }

メソッドの違いは、$index と私の domdocument の一部の変更です。本当に面倒で、リファクタリングを使用できると思います。誰にも良い提案はありますか?ありがとう!

4

1 に答える 1