• ベストアンサー

PHPで文字列取得

現在PHPでプログラムを作成してるものです。 $string = gegfafgdahfj<get>あいうえお</get>ahjjhgj; という文字列から<get>~</get>の『あいうえお』だけを取得したいんですが、こんなことができる都合のよい関数はあったりするんでしょうか?もしくは、簡単に取得できるアイデアなどがあったら教えていたけないでしょうか?? お願いいたします。

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

$string = "gegfafgdahfj<get>あいうえお</get>ahjjhgj"; $pattarn="<get>.*?</get>"; if(mb_ereg("$pattarn", $string, $match)){ $text=$match[0]; $text=mb_ereg_replace ( "<get>|</get>", "", $text); print $text; }

kotakota1010
質問者

お礼

なるほど!!こうやるんですか!!!つかわさせていただきます。ありがとうございました。

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

その他の回答 (1)

  • cybert
  • ベストアンサー率56% (18/32)
回答No.2

$string = "gegfafgdahfj<get>あいうえお</get>ahjjhgj;"; if(preg_match("/>(.+)</",$string,$aiueo)){ echo $aiueo[1]; }

kotakota1010
質問者

お礼

これも文が短くて分かりやすいですね!!preg_matchという構文は知りませんでした。残念ながら<get></get>の部分が沢山ありかつ何個あるか分からないので今回は使えませんが参考にさせていただきます。 ありがとうございました。

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

関連するQ&A

  • 文字列を取得し書き出す

    プログラムを書いたファイルから Test っていう文字列が含まれる関数名をすべて取得して DoTest という関数内に書き出すというものをつくりたいんですが どうすればよいかわかりません… どなたかご教授ください。

  • 文字列比較

    最長10文字の文字列を2件入力し、char型の配列にそれぞれ格納する。2つの文字列を比較し、文字列が同じだったら「equal」を表示し異なっていたら「Not equal」を表示するプログラムを作成せよという課題が出ました。 条件として、11文字以上の文字が入力されたら、先頭から10文字までを有効とし、11文字目以降を無視する。下記のプログラムで文字列1に11文字以上入力すると、うまく動きません。なぜ、うまくいかないかと、どうなおしたらよいかを教えてください。 #include<stdio.h> #include<string.h> #define max_length 10 void get_string (char *p_str, int size); int main() { char string1[max_length+2]; char string2[max_length+2]; printf("文字列1:"); get_string(string1,max_length+2); printf("文字列2:"); get_string(string2,max_length+2); if(!strncmp(string1,string2,max_length)) puts("equal"); else puts("Not equal"); } void get_string (char *p_str, int size) { fgets(p_str,size,stdin); }

  • 正規表現:文字列の最後にマッチした文字以外を取得

    phpを使って、正規表現と関数で文字列の編集を行っているのですが いい方法が思いつきません。 やりたいことは以下のようなことです。 $find ="\n"//マッチさせたい文字 $string = "リンゴ、空、\nミルク、車\n";//検索対象 $str=関数($string);//わからない部分 print($str); ↓表示結果 リンゴ、空、\nミルク、車 文字列のインデックスの0から、最後にマッチした文字列の直前までを取得するにはどうしたらよいでしょうか。 またこのような表現には何か名前がついていますか? ご教授ください。

    • ベストアンサー
    • PHP
  • 文字列の取得

    string.subString()のなどで文字列を指定文字数分取得する場合に、バイト数指定で取得する方法ってありますか? 教えてください。

    • ベストアンサー
    • Java
  • 全角半角混在の文字列から○文字まで取得する方法

    はじめまして! MySQLから取得した文字列をPHPで例えば10文字まで表示したいのですが、良いやり方ありますでしょうか? 文字列には全角半角が混在しているので substr関数だと、うまく取得できない場合があります。よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 文字数を取得したい

    漢字を含んだ文字列の文字数を取得したのですがうまくいきません。 どなたか教えてください。 例: 「asetg漢字」という文字列だったら、7文字として取得したい。 上記の例で、lstrlenや、MFCの関数(String)で文字数の取得を試みたのですが、バイト数で取得してしまうため、うまくいきませんでした。

  • 文字列の操作について教えて下さい。

    Javaで文字列の操作をしたいと考えています。 String str1 = "あいうえおかきく"; String str2 = "あいうえお"; 上記のようなstr1、str2という文字列があるとします。 str1は、str2と同様の文字列を先頭から含んでいます。 str2と同じ文字を省き、それ以降の文字列を取り出して、 String str3 = "かきく"; という文字列を取り出す処理を行いたい、と考えています。 一般的には、どのようなロジックを組むのかと思い質問させて頂きました。 みなさんなら、どのようなプログラムか教えてください。 よろしくお願い致します。m(_ _)m

  • PHPでの文字列置換について

    こんにちは PHPにて丸カッコ内の文字列を取得しようとしています。 対象の文字列は、「坂(さか)」という文字列の全角丸カッコ「()」内になります。 正規表現でやればすぐに取得できるのかもしれませんが、正規表現の知識が無いため 力ずくでやってみようとしました。 そこで、「(」で文字列の位置を取得して…と考えて色々やったのですが、 この全角丸カッコ「(」が、mb_strposでも位置を検知できず、 全角丸カッコ「(」を半角にして対応してみようかとmb_ereg_replace('(','(','坂倉武史(さかくらたけし)');としようとしても、変換されず困っております。 ちなみに「坂(さか)」という文字列は、 ネット上のあるHTMLから、file_get_contentsでURLを指定してから 取得して、その文字コードがEUC-JPなので、 mb_convert_encoding($dataXML, "UTF-8", "EUC-JP"); で、UTF-8に変更しております。 文字コードの問題のかもしれませんが、答えがみつかりません。 1。正規表現で取得できるのであれば、正規表現の書き方をお教えいただけますでしょうか。 2。正規表現が難しいのであれば、力ずくでやるのでこの「(」全角丸カッコの始まりの検知方法をお教えいただけますでしょうか。 PHPの実行環境は、 PHP5.3 mbstring.language  japanese mbstring.internal_encoding  UTF-8 mbstring.encoding_translation  ON default_charset  UTF-8 UNIX 文字コード UTF-8 ソース文字コード UTF-8 です どうぞよろしくお願いいたします。

    • ベストアンサー
    • 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
  • PHPソースファイルの文字列置換をしてから、

    PHPソースファイルの文字列置換をしてから、 そのスクリプトを実行する方法を実行しようとしている のですが、うまくいきません。 似たような質問(http://oshiete.nikkeibp.co.jp/qa5496696.html) を参考にして、文字列置換自体はうまくいったのですが、 phpファイル実行時にまったく関係の無いはずの DBアクセスでエラーが発生してしまいました。 変換前前のphpファイルに置換後の文字列を手で入れて、 データベース実行するとうまくいきます。 しかしながら、phpファイルの文字列置換をstr_replaceで実行し、別名保存した後 includeしても、うまくいかないといった状況です。 ちなみに置換後のphpファイル内で $置換後文字列 = "test"; echo $置換前文字列; とすると、置換前文字列が置換後文字列に きちんと変わっているようで、 "test"と出力されます。 もしかすると、原因は違う所に潜んでいるのかもしれませんが、 どこを調べれば良いのか検討がつかず困っております。 どなたか解決手段の分かる方がいらっしゃれば教えて頂けませんでしょうか? -------------------------------------------------------------- 尚、ファイル構成は top |-change (1.php) |-database (2.php) |-search (検索画面[データベース検索の入り口。form action ="./3.php"],3.php) |-base (4.php,5.php[tempファイル]) となっており、 それぞれの中身は 1.文字列置換実行用のphpファイル(1.php):  1-1.file_get_contentsで4のphpファイルを取得  1-2.str_replaceを用いて文字列置換  1-3.文字列置換したファイルをfwriteで4.phpと同じディレクトリに保存(5.php)  1-4.5.phpをincludeする。  1-5.5.phpをunlinkする。 2.データベースアクセス(mysql)用関数を含むphpファイル(2.php):  ↓エラーの原因と思われる関数  function connect() { global $host,$user_id,$passwd,$con; $con = mysql_connect($host,$user_id,$passwd); } 置換前phpファイルを手動で文字列置換した場合には  同ファイル内で設定したglobal変数の値がきちんと格納されており、  データベース実行がうまくいきます。  置換後phpファイルでは$host等に値が格納されていないため、  データベース実行がうまくいきません。  グローバル変数の中身は同ファイル内で定義しています。 3.検索を実行した時に呼び出されるphpファイル(3.php):  3-1.include("../change/1.php"); 3-2.1.phpの関数の実行 4.文字列置換前のphpファイル(4.php): /*呼び出し元のディレクトリ位置でないとincludeに失敗する*/ 4-1.include("../database/2.php");  4-2.2.phpのデータベースアクセス関数を実行する。 5.文字列置換後のphpファイル(5.php): 3-2の1.php関数の実行により、一時的に生成される。

    • ベストアンサー
    • PHP
このQ&Aのポイント
  • NASに保存したデータへの上書き保存に時間がかかる問題が発生しています。
  • 上書き保存の度に3,4分かかり、他のデータには問題がないため、さよなら手書きのデータに特定の現象が起こっています。
  • PC内のデータへの上書き保存は問題ないため、解決方法を知っている方からの教授をお願いします。
回答を見る