str_replaceがうまくいかない!CSSセレクタの除去方法は?

このQ&Aのポイント
  • Dust-Me Selectorsを使用して、セレクタを探してみましたが、930件も見つかってしまいました。
  • サイトのCSSはstyle.cssにまとめられていますが、使われていないセレクタのリストはused-doctype.txtにあります。
  • PHPのコードを実行してみましたが、str_replaceがうまく機能していません。class1やclass3などが削除されません。解決策を教えてください。
回答を見る
  • ベストアンサー

str_replaceがうまくいきません

Dust-Me Selectorsを使い、使用していないCSSセレクタを探したところ、930件ほど出てきました。 私のサイトはCSSはstyle.css一つにまとめています。doctype.cssの内部は .class1,.class2{…}.class1,.class3,.class4{…},… の形で一行のみ記述されています。 使われていないCSSセレクタは、used-doctype.txt中に、 .class1 .class3 .class4 : : の形で記述されています。.今、次のPHPコードを実行しようと思います。 <?php $css=file_get_contents("./doctype.css"); $handle = fopen( "./used-doctype.txt", "r" ); $null=""; while ($array = fgetcsv( $handle )) { //echo $array[0]; str_replace($array[0],$null, $css); } echo $css; ?> しかしechoされた結果では、class1、class3、class4がいずれも確認されます。 while中での$array[0]のechoは成功していますので、str_replaceがおかしいと思うのですが原因が判りません。 どこを変更すれば、$cssからclass1、class3などを除去できるでしょうか。 どなたかご教示のほど、どうかよろしくお願いいたします。

  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • axuaxua
  • ベストアンサー率36% (82/223)
回答No.1

$css = str_replace($array[0],$null, $css); でいいはずです。置換結果を受け取ってません

spinia0120
質問者

お礼

肝心なところを見落としていましたorz うまくいきました。ありがとうございました。

関連するQ&A

  • ?をつけて送信してもだめでしょうか

    ちゃんと表示されるのは これを実行したときで <?php $handle = fopen("jikken.csv", "r"); while (($data = fgetcsv($handle,1000, ",")) !== FALSE) { $num = count($data); if($data[0] == 9999999){ echo $data[1]."<br>\n"; } } fclose($handle); ?> しかし <?php $codex = $_POST['code']; $handle = fopen("jikken.csv", "r"); while (($data = fgetcsv($handle,1000, ",")) !== FALSE) { $num = count($data); if($data[0] == $codex){ echo $data[1]."<br>\n"; } } fclose($handle); ?> このように入れて ~~.php?code=9999999 としても うまくいかないのです 何がおかしいのでしょうか

    • 締切済み
    • PHP
  • preg_replace 英数字以外の文字の前後のスペースを削除

    preg_replaceで 英数字の前後いずれかのスペースは残して それ以外のスペースを消したいのですが あ a間が消えてしまいます。(英数字前なので消さない) a aはのこるので英数字後のスペースは残せてます。 <?php $str = \"あ a a\"; $txt = preg_replace(\"/([^a-zA-Z\\d])\\s+/u\", \"$1\", $str); echo $txt;

    • ベストアンサー
    • PHP
  • htmlで作成したフォームにcsvファイルのデータを表示するには

    <?php //ファイルを開く $fp = fopen('maillog.csv', 'r') or die('ファイルが開けません'); //テーブルを出力 echo '<table border="0">'; echo '<tbody>'; while ($field_array = fgetcsv($fp, 4096, ',', '"')) { echo '<tr>'; foreach ($field_array as $key=>$value) { if(!in_array($key,Array(0,1,2,3,4,5,6,7))) continue; echo '<td nowrap>'.htmlspecialchars($value, ENT_QUOTES).'</td>'; } echo '</tr>'; } echo '</tbody>'; echo '</table>'; //ファイルを閉じる fclose($fp); ?> 簡単な一覧は、できるのですが 下記、フォームに対してデータの一覧を表示するには どうすれば良いのでしょうか? 教えてください

    • 締切済み
    • PHP
  • PHPでcsvファイルを一覧表示するにはどうすれば良いのでしょうか?

    <?php //ファイルを開く $fp = fopen('maillog.csv', 'r') or die('ファイルが開けません'); //テーブルを出力 echo '<table border="1">'; while ($field_array = fgetcsv($fp, 10000, ',', '"')) { echo '<tr>'; foreach ($field_array as $value) { echo '<td>'.htmlspecialchars($value, ENT_QUOTES).'</td>'; } echo '</tr>'; } echo '<table>'; //ファイルを閉じる fclose($fp); ?> プログラムだと、全ての項目が表示されてしまうので 少ない項目(3~4つ)で表示できるにはどうすれば良いのでしょうか? また、各項目毎のタイトルも付けたいのですが お願いします。

    • 締切済み
    • PHP
  • CSVファイルを読み込んで表示するPHP

    <?php setlocale(LC_ALL, 'ja_JP'); if( $handle = fopen( 'data.csv', 'r' ) ){ echo '<table border=1 cellspacing=0 bordercolor=#ff6600 align=center>'; if( ( $data = fgetcsv( $handle ) ) !== FALSE ){ echo '<tr style="background-color:#FFCCFF">'; for( $i = 0; $i < count( $data ); $i ++ ){ if($i===0){ echo '<td align=center width=160px>' . $data[$i] . '</td>'; }else{ echo '<td align=center width=60px>' . $data[$i] . '</td>'; } } echo '</tr>'; } while( ( $data = fgetcsv( $handle ) ) !== FALSE ){ echo '<tr>'; for( $i = 0; $i < count( $data ); $i ++ ){ echo '<td align=center>' . $data[$i] . '</td>'; } echo '</tr>'; } echo '</table>'; } fclose($handle); ?> ■data.csvの内容 品名,数量,予備 AAA,1,1 BBB,1,1 CCC,1,1 上記のPHPは2列まで表示されるようになっています。 それを3列まで表示できるようにしたいのですが、 初心者なので、どう記述したらいいのか分かりません。 どうか、ご教授お願いします。

    • ベストアンサー
    • PHP
  • CSVからの抽出、並び替えのプログラム

    すいません。phpを勉強し始めたばかりで、CSVから抽出したものを並び替えたいと考えていまして、 サンプルプログラムをいくつか見ていたのですが一部よく分からない所があります。 例えば以下のプログラムで $names = Array(); と$names[] = $lines[0]; はどのような処理をしているのでしょうか? ただ単にCSVから読み込み→配列を全部表示では上記の処理は見当たりません。 斉藤一郎,170,60,A 鈴木二郎,180,90,B 田中三郎,190,80,O 中村四郎,160,100,AB <?php if( $handle = fopen( 'test.csv', 'r' ) ){ $names = Array(); // while( ( $lines = fgetcsv( $handle ) ) !== FALSE ){ if( $lines[2] >= 90 ){ //体重が90以上なら $names[] = $lines[0]; // } } echo '体重が90kg以上なのは、' . implode( '・', $names ) . 'です'; } ?>

    • ベストアンサー
    • PHP
  • IE9でCSS3が機能しない

    CSSセレクタについてお伺いします。 あるショッピングカートサイトを使っているのですが、このサイトはhtmlは編集できずCSSしか編集できないページがあります。 このページのデザインをなんとか編集したいと奮闘しています。 そのサイトのhtmlは不親切にもidやclassがほとんど記述されていません。 そのため:nth-child(n)などを使ってなんとか要素を編集できそうでした。 しかしfirefoxやchrome、operaはこの:nth-child(n)が機能するのですが IE9では機能しません。 IE9ではhtmlの宣言を<!DOCTYPE html>と記述しないとCSS3 は使えないのでしょうか? CSS側だけでなんとかclassなどの指定がない要素を取得する方法はないでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • CSS
  • CSVファイルの読み込みで日本語が出力されない!

    PHPを使ってCSVファイルを部分的に読み込むコードを教えてもらいました。 しかし、CSVに入力している英語と数字は出力されるのに、日本語は空白のままでした。 教えてもらったコードは次の通りですですが、日本語も出力する場合、どうしたら良いのでしょうか? <?php function h( $str ) { return htmlentities( $str, ENT_QUOTES, 'UTF-8' ); } ?> <? if (($handle = fopen("test.csv", "r")) !== FALSE) : ?> <table class="table1" width="100%" cellspacing="0" cellpadding="0" border="0"> <tr> <? $i = 0; ?> <? while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) : $i ++ ?> <td><?=h($data[0])?><img src="http://1-<?=h($i)?>.gif"><br><?=h($data[1])?><br><?=h($data[2])?><br><span class="red"><?=h($data[3])?>円</span></td> <? endwhile; ?> </tr> </table> <? fclose($handle); ?> <? endif; ?>

    • ベストアンサー
    • PHP
  • [CakePHP] Paginatorのリンクが変

    CakePHPのPaginatorを使ったページリンクが正しく出力されません。 1ページ目は正しく出力できていますが、2ページ目などに移動した際にURLがおかしくなります。 現状 1ページ目 http://www.example.com/hoge/2 ↓ 2ページ目 http://www.example.com/hoge/2/page:3 理想 1ページ目 http://www.example.com/hoge/2 ↓ 2ページ目 http://www.example.com/hoge/3 また、パラメータがついた場合も 1ページ目 http://www.example.com/hoge/2?hoge=hoge ↓ 2ページ目 http://www.example.com/hoge/3?hoge=hoge となるようにしたいのですが、何を間違えているのでしょうか。 ちなみにソースは以下のようになってます。 View/Hoge.php echo $this->Paginator->prev('< 前へ', array(), null, array('class' => 'prev disabled')); echo $this->Paginator->numbers(array('separator' => '')); echo $this->Paginator->next('次へ >', array(), null, array('class' => 'next disabled')); Config/routes.php Router::connect(     '/hoge/:page',     array(         'action' => 'hoge',     ),     array(         'pass' => array(             'page',         )     ) );

    • 締切済み
    • PHP
  • phpのin_array()でわからない事があります。

    phpのin_array()でわからない事があります。 $str = array('リンゴ','オレンジ','バナナ'); if(in_array("オレンジ",$str)){ print "OK"; }else{ print "NG"; } 結果:OK 上記は何の問題もないのですが、 $str = @file('hoge.txt'); if(in_array("オレンジ",$str)){ print "OK"; }else{ print "NG"; } 結果:NG // hoge.txt リンゴ オレンジ バナナ こうするとNGになってしまいます。 最近PHPを始めたばかりで根本的な事がわかってないのかも知れませんが、 もし原因をご存じの方がいれば教えていただけないでしょうか。 すみませんがよろしくお願いいたします。

    • ベストアンサー
    • PHP

専門家に質問してみよう