• 締切済み

PHPでのパターマッチングと文字列の取得について

PHPでのパターンマッチングについて質問です。 ある文章から特定の文字や数字を取り出したいと考えています。 いろいろ調べて試しましたが、うまくいきません。。 今は以下のように試しましたがこれでは特定のものは取り出せないと気付きました。 <?php $str=fopen("test.txt","r"); $str2= strstr($str,"point"); echo $str2;ここも何も表示されず… ?> 理想としては、例えば英文が数行あり、その中にpoint=13というものがあったとします。ここで13という値を取得して、別のファイルの指定したところに挿入したいのですが、phpで可能でしょうか。 可能であれば、やり方や、関数など教えてもらいたいです。 よろしくお願いします。

みんなの回答

  • altrn
  • ベストアンサー率62% (10/16)
回答No.2

<?php //ファイルの内容を取得 $str=file_get_contents("test.txt"); //echo $str; preg_match('#point=([0-9]+)#',$str,$match); //print_r($match); //マッチしていたら if(isset($match[1])) echo $match[1]; でどうですか?

全文を見る
すると、全ての回答が全文表示されます。
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

fopenで返るのはハンドラです、やるならfreadしてもいいし、 単純にreadfileしてもいいですが、strstrはないでしょう。 マニュアルを一度よく読まれるとよいでしょう。 http://www.php.net/manual/ja/function.fread.php マッチングはpreg_matchで正規表現をつかうのが常套です。 http://www.php.net/manual/ja/function.preg-match.php

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • PHP

    PHPで無駄なコーディングをしない為、ループでまわしたいのですが関数が入り、ややこしくなっています。どうしたらいいですか? <select name="nminute"> <option value="0" <?php if(strstr($nminute,'0')) echo"selected"; ?>>0</option> <option value="1" <?php if(strstr($nminute,'1')) echo"selected"; ?>>1</option> <option value="2" <?php if(strstr($nminute,'2')) echo"selected"; ?>>2</option> <option value="3" <?php if(strstr($nminute,'3')) echo"selected"; ?>>3</option> <option value="4" <?php if(strstr($nminute,'4')) echo"selected"; ?>>4</option> <option value="5" <?php if(strstr($nminute,'5')) echo"selected"; ?>>5</option> <option value="6" <?php if(strstr($nminute,'6')) echo"selected"; ?>>6</option> <option value="7" <?php if(strstr($nminute,'7')) echo"selected"; ?>>7</option> <option value="8" <?php if(strstr($nminute,'8')) echo"selected"; ?>>8</option> <option value="9" <?php

    • ベストアンサー
    • PHP
  • PHPの文字列をJavascriptの変数にする

    PHPの変数に格納された文字列を、直接Javascriptの変数の一部として格納しようと考えています。 例:) <script> var txt = "<?php echo $text; ?>"; </script> しかし、$textにダブルクォーテーションなどの文字が含まれていると、スクリプト全体が破綻します。今のところ、PHPの中で、問題を起こしそうな文字列を変換するように処理しています。 例:) $text = str_replace("\\", "\\\\", $text); $text = str_replace("\"", "\\\"", $text); $text = str_replace("\n", "\\n", $text); これよりもスマートな方法(たとえば用意されている関数を使うなど)がありますでしょうか。

    • ベストアンサー
    • PHP
  • 関数の第二引数を省略可にする方法

    PHPのソースで <?php // -------------- function hogehoge($str,$strstr) { $s = $str; $s .= ' - '. $strstr; return $s; } echo hogehoge('Hello world','ようこそ!'); // -------------- ?> とすると Hello world - ようこそ! とでますが、 hogehogeの第二引数を省略して <?php // -------------- echo hogehoge('Hello world'); // -------------- ?> hogehogeの第二引数を省略するとエラーが出るので <?php // -------------- function hogehoge($str,$strstr) { $s = $str; $result_strstr = $strstr; // if ( $result_strstr != '' ) ) { $s .= ' - '. $strstr; } if ( isset( $result_strstr ) ) { $s .= ' - '. $strstr; } return $s; } echo hogehoge('Hello world'); // -------------- ?> とやってもエラーが出て 第二引数を省略可という関数を作ることができません。 どのようにすればよいのでしょうか?

    • ベストアンサー
    • PHP
  • preg_replace()でマッチ文字列に関数を

    PHPでのpreg_replace()でマッチした文字列に関数を適用したいのですが、上手くいきません。 $str = "hogeHoge"; $pattern = '/(h.ge)/i'; $replacement = strtoupper("$1"); echo preg_replace($pattern, $replacement, $str); // 期待する結果 : HOGEHOGE // 実行した結果 : hogeHoge 根本的に間違っているかもしれませんが、ご指南いただければ幸いです。

    • ベストアンサー
    • PHP
  • phpで作成したファイルをシェルで読み込むと最後の行を読み込めない

    phpでリストを取得し、ファイルに書き込んでいます。 リストはスペース区切りで帰ってくるので、改行コードに変換しています。 $str = "a b c"; $str =str_replace(" ","\n",$str); //リストファイルへ書き込み $pointer=fopen("aaa.txt","w"); flock($pointer, LOCK_EX); fputs($pointer, $str); flock($pointer, LOCK_UN); fclose($pointer); これをviで開いてみると a b c と予定通り書き込まれています。 このリストをシェルスクリプトでループして読み込んでいるのですが 最後の行を読み込んでくれません。 while read line do echo "$line" done < aaa.txt とやると 最後の行が読み込まれないんです!(aとbしか表示されない) ちなみに、aaa.txtをviで開いて何もせずに保存終了すると 正常に最後の行が表示されることから、aaa.txtの終了コードがうまく 書き込まれていないのでは?と予想していますが、よくわかっていません。 どうしたら最後の行を読んでくれるのでしょうか。 ※最後の行に改行コードをつけると次の空白行を読みにいってエラーになるのでそれ以外でお願いします。

    • 締切済み
    • PHP
  • PHPでFopenモードを「a」で開きたいのですが、

    PHPでFopenモードを「a」で開きたいのですが、 パーミッションを「777」でしか受け付けてくれません。 コードは、 $fp = @fopen("test.txt","a") or die("Error"); echo "ok"; fclose($fp); です。 サーバーはxreaでPHPのバージョンは5です。

    • 締切済み
    • PHP
  • PHPで画像を取得、保存する方法

    以下で画像を取得、保存する事が出来ましたが、このプログラムで大丈夫でしょうか? 画像取得、保存の関数やもっと良い方法があれば教えて下さい。 <?php echo "あいうえお"; $temp=file_get_contents("http://www.google.co.jp/intl/ja_jp/images/logo.gif"); echo $temp; echo "<HR>"; $handle=fopen("test.gif","w"); fwrite($handle,"$temp"); fclose($handle); echo "<img src=\"./test.gif\">"; if(is_string($temp)) echo "STRING<BR>"; ?> 疑問点について。 上記プログラムですと、画像を入れた変数$tempが文字列として出力されますが、 1行目の、echo "あいうえお";をコメントアウトするとブラウザに画像が表示されるだけで、fopen,fwriteはきちんと処理されているのにechoの出力が無視されるのはどうしてですか?

    • ベストアンサー
    • PHP
  • ファイルの内容の削除【ファイルシステム関数】

    以下のユーザー定義関数で、POSTで受け取った数値の増減をあるファイルに書き換える作業をおこないたいのですが、1桁の数値であれば問題ないのですが、2桁の数値にし、マイナスの数値で減らすと値が「00」となってしまいます。文字列として認識してしまっているためかとは存じますが、良い解決方法が思い浮かびません。以下ソースです。 <? function cnt($str){ if(isset($_POST[$str])){ $fp = fopen( $str.".txt", "r+" ); flock($fp,2); $count = fgets( $fp, 5 ); $strstr = $_POST["$str"]; $count+= $strstr; rewind( $fp ); fputs( $fp, $count ); flock($fp,3); fclose( $fp ); print($count); }else{ $fp = fopen( $str.".txt", "r" ); $count = fgets( $fp, 5 ); print($count); };} ?> ファイルシステム関数については苦手で、うまく理解しきれていません。 アイデア・解決法をご存知の方がいらっしゃいましたら、ご回答いただければうれしいです。よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPで、○番目のカンマの文字を呼び出す方法

    0,123,45,678,999 など、カンマ区切りの情報がある data.txt というファイルがあり、 別のPHPファイルにdata.txtの内容を書き出したい場合、 <?php echo file_get_contents("data.txt"); ?> と書くと全部表示されてしまいます。 data.txtの1行目で、2番目と3番目のカンマの間の数字(上の例ですと123)を書き出すには、どのように書いたらよいか、お分かりになる方教えて頂けませんでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 特定の文字が文字化けします

    こんにちは。 とても困ってます。 例えば、phpで echo "<P><FORM ACTION=\"main.php\">"; echo "<METHOD=POST>"; echo "<INPUT TYPE=HIDDEN NAME=res VALUE=\str_request\">"; echo "<INPUT TYPE=HIDDEN NAME=action VALUE=post>"; echo "<TEXTAREA NAME=\"str\" ROWS=\"8\" COLS=\"50\"></TEXTAREA>"; echo "<INPUT TYPE=\"submit\" VALUE=\"send">"; echo "</METHOD></FORM></P>"; と記述して「send」ボタンを押下して文字列をPOSTした場合、 受け取った文字($str)の特定の文字が文字化けします。 特定の文字とは、「る」「れ」「ろ」などです。 どなたか原因がわかる方いらっしゃらないでしょうか?

    • 締切済み
    • PHP