• ベストアンサー
  • すぐに回答を!

index.php から外部関数に飛び、文字列を返してきてindex.

index.php から外部関数に飛び、文字列を返してきてindex.phpで XML形式で表示するプログラムはどのように書けばいいんでしょうか? /* ---func1.php--- */ function func1($aa,$bb){ $xml_code = "<func1>\n"; $xml_code .= "<aaa>".$aaa."</aaa>\n"; $xml_code .= "<bbb>".$bbb."</bbb>\n"; $xml_code .= "</func1>\n"; return ($xml_code); } /* ---func2.php--- */ function func2($cc,$dd){ //DBからデータを取得して $sql = "SELECT ccc, ddd, eee, tel FROM tbl_a WHERE id = ".$id; $moji_db = ""; $result = mysql_query($sql); while ($row = mysql_fetch_assoc($result)){ $xml_code = "<func2>\n"; $xml_code .= "<ccc>".$row['ccc']."</ccc>\n"; $xml_code .= "<ddd>".$row['ddd']."</ddd>\n"; $xml_code .= "<eee>".$row['eee']."</eee>\n"; $xml_code .= "</func2>\n"; } return ($xml_code); } index.php で 両方の$xml_codeを出力する 以上のようなプログラムなんですけど、 index.phpでのxmlでの表示の仕方がわかりません。 /* ---index.php--- */ <?php // require func1.phpとfunc2.php function xml_make(&$xml ){ // DB 接続 // XML Header生成 echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>"."\n"; echo func1(); echo func2(); // XML Footer生成 // DB 切断 } ?> としてindex.phpを実行するとIEで以下のエラーが出ます。 (firefoxではでません。両ブラウザ共、ソースを表示するとXML形式にはなっていますが・・) 「XML ページを表示できません XSL スタイル シートを使用した XML 入力は表示できません。 エラーを訂正してください。 [更新] ボタンをクリックするか、または後でやり直してください。 -------------------------------------------------------------------------------- XML ドキュメント内では最上位の要素に限り、使用できます。 」 それと文字列($xml_code)をSimpleXMLで処理するにはどうしたらいいのでしょう?

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数139
  • ありがとう数2

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

  • ベストアンサー
  • 回答No.1
  • yyr446
  • ベストアンサー率65% (870/1330)

IEで以下のエラーが出ます。 =>XMLのドキュメントルートがないからじゃないですか。 header('Content-Type: text/xml; charset=utf-8'); echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>"."\n"; echo "<hoge>"; echo func1(); echo func2(); echo "</hoge>"; それから改行文字は不要だと思うんですけど(人間が見るなら見やすいですが) SimpleXMLで処理するにはどうしたらいいのでしょう? =>simplexml_load_string関数とかsimplexml_load_file関数です。 http://www.phppro.jp/phpmanual/php/book.simplexml.html SimpleXMLは、出来上がってるXMLを簡易にパースするのに使います。 新たにXMLを生成するなら、DOM関数では、 http://www.php.net/manual/ja/book.dom.php

共感・感謝の気持ちを伝えよう!

質問者からのお礼

丁寧に回答ありがとうございます。 ドキュメントルートを入れたらできました。 SimpleXMLとDOMの使い方の違いもいまいちわかってなかったので勉強になりました。

関連するQ&A

  • sedで文字列の抜き出し

    ある一部分の文字列を抜き出したく、sedを使用したいと思って試行錯誤しております。 ↓あるファイル内の文字列 aaa bbb=ccc:ddd=eee:fff=ggg: aaa bbb=hhh:ddd=iii:fff=jjj: ※aaaとbbbの間はスペースです。 ※bbb,ddd,fffはある一定のキーワードです。 ※ccc,eee,ggg,hhh,iii,jjjはバラバラの文字列で長さも一定ではありません。 【質問】 上記の文字列の中でddd=の後の文字列(eee,iii)のみを抜き出したいです。 以下のようなsedを試してみましたが、 eee:fff=ggg iii:fff=jjj が抜き出されてしまいます。 sed 's/.*:ddd=\(.*\):\(.*\)$/\1/' 恐れ入りますが、皆様の知恵をお貸し下さい。

  • PHPの文字列の中に<>を入れると、その中が消える

    PHP初心者です。 例えば、下記のように変数に文字を入れたいです。 $text = "aaa<bbb>"; そうすると、なぜか、<>の中身が消えてしまうのですが、 このような場合、どうしたら良いでしょうか? echo $text; とすると、 aaa し表示されません。 試しに、 $text = "aaa<bbb>ccc"; とすると、aaaccc と表示されます。 ちなみに、mail()関数の中のheader要素を代入する際にこの問題にぶちあたっています。 smartyを使っています。※初期設定のみで何もしていません。 分る方がいましたら、ご助言いただけるとうれしいです。

  • 【超初歩】配列に格納した文字列を書き出すには?

    配列である、$arrMyString[] に、 aaa@example.com bbb@example.com ccc@example.com ddd@example.com eee@example.com といった5種類の文字列が格納されているとします。 これを、半角カンマ+半角スペースでつないで書き出す(echo)にはどのような方法がありますか。 なお、最後の文字列の後ろには不要です。 ■書き出しイメージ aaa@example.com, bbb@example.com, ccc@example.com, ddd@example.com, eee@example.com

    • ベストアンサー
    • PHP
  • CSVに外部テキストファイルを列として追加する方法

    こんにちは。 CSVファイル(base.csv)の先頭列に、別のテキストファイル(add.txt)の中身を新規の列として挿入したいと考えているのですが、よい方法がわかりません。。。 どうのような方法を使えば対応することができるでしょうか? どうぞよろしくお願いいたします。 ■CSVファイル(master.csv) title,developer_name,seller_name,primary_genre_name,application_url AAA,BBB,CCC,DDD,EEE AAA,BBB,CCC,DDD,EEE AAA,BBB,CCC,DDD,EEE AAA,BBB,CCC,DDD,EEE ■テキストファイル(add.txt) id 000 111 222 333 ↓ ■目標としたファイル(master.csv) id,title,developer_name,seller_name,primary_genre_name,application_url 000,AAA,BBB,CCC,DDD,EEE 111,AAA,BBB,CCC,DDD,EEE 222,AAA,BBB,CCC,DDD,EEE 333,AAA,BBB,CCC,DDD,EEE

  • 変数の中身をある文字列を基準として分解したいです。

    変数の中身をある文字列を基準として分解したいです。 phpで変数の中身をある文字列を基準として分解したいです。 例として $value = "aaa,bbb,ccc,ddd,eee,"; $valeの中身を","を基準として取り出したいのですが可能でしょうか? 1件目:aaa 2件目:bbb 3件目:ccc 4件目:ddd 5件目:eee のような感じで画面に表示したいです。 ご教示、よろしくお願いします。

    • ベストアンサー
    • PHP
  • 2回以上繰り返される文字列の削除について

    以下の文字列(置換前)で、-aaa について複数存在しているので、 最初の -aaa を残して残りの -aaa をすべて削除したいと考えています。 1回の正規表現+置換で行いたいのですが、どのようにいすればよいでしょうか? 【置換前】 -bbb -aaa -ccc -aaa -ddd -eee -aaa -fff 【置換後】 -bbb -aaa -ccc -ddd -eee -fff ちなみに、複数回の正規表現+置換を使ってよい場合は、 while (m/( -aaa.*) -aaa/) { s/( -aaa.*) -aaa/$1/; } でできると考えています。(動作確認まではしていないので間違ってるかも)

    • ベストアンサー
    • Perl
  • 何度も出現する文字列AAのうち、3番目と4番目のAAの間にある文字列を得たい

    以下のようなHTMLから、 <tr><td>AAA<td>BBB<td>CCC<td>DDD<td>EEE<td></tr> CCC という文字列だけを取り出したいとき、Perl、または 正規表現ではどのように記述したらよいのでしょうか?? Index関数を使ってみたのですが、うまくいきませんでした。 アドバイスをよろしくお願いします。

    • ベストアンサー
    • Perl
  • テキストファイルの任意の文字以降の文字列を削除したい

    test.txt AAA+あいうえお BBB+かきくけこ CCC+さしすせそ DDD+たちつてと EEE+なにぬねの 上記(test.txt)のようなテキストファイルから、各行の+以降の文字列を削除して、 以下(result.txt)のようなテキストファイルを生成させるプログラムを作成させたいです。 result.txt AAA BBB CCC DDD EEE このようなプログラムを作るにはどのようにすればよいでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • xmlからphpでうまくデータを出力できない

    WEBサービスでリクエストに対して取得したxmlの中で、下記のようなデータがあるのですが、それがうまくphpで出力できなくて困っています。 [xmlのデータ(一部)] <aaa>  <bbb>   <ccc>    <ddd>あいうえお</ddd>    <Date date="05" month="09" year="2009"> [phpのソース] echo $aaa->bbb->ccc->ddd ; echo $aaa->bbb->ccc->year ; ・・・(※) (※)の行は思いつきで書いてしまっているのですが、この状態で実行すると、「あいうえお」は取得できますが、日付が当然取得できません。質問は以下です。 (※)の部分は、どう書けばいいのでしょうか?

    • 締切済み
    • PHP
  • Excelの関数に詳しい方、お願いします。

    わかりづらい説明かもしれませんが、よろしくお願いします。 例として、 AAA*BBB*CCC*DDD*EEE*FFF AAA*BBB*CCC*DDD*EEE*FFF AAA*BBB*CCC*DDD*EEE*FFF AAA*BBB*CCC*DDD*EEE*FFF AAA*BBB*CCC*DDD*EEE*FFF ・ ・ ・ といった文字列がエクセルの先頭列A1&#65374;A100までずらりと並んでいるとします。 各アルファベットには任意の数字(日付など)が入るとして、この並んだ百件のデータからCCCの部分の最大値を表示するための適切な関数があれば教えていただけないでしょうか? 現在少々急いでいるため言葉足らずで申し訳ありませんが、よろしくお願いいたします.