- ベストアンサー
domxml_open_mem 関数 について
Fatal error: Call to undefined function domxml_open_mem() in C:\xampp\information.php on line 51 というエラーが出てしまい、悩んでいます。 エラーの内容としては、関数が無いというエラーのようで ただ、リファレンスを見るときちんと掲載されています。 PHP5を利用しているのですが、PHP4から記述方法が変更 されたりなど、しているものなのでしょうか? ご存知の方いらっしゃいましたら ご教授願いたいです。よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
PHP5ならば、DOMXML関数ではなく、DOM関数を使用します。 DOM関数ならば、PHP5に入っていたと思います。 $doc = new DOMDocument(); $doc->loadXML($xml);
その他の回答 (1)
- izayoimizuki
- ベストアンサー率41% (84/202)
domxmlということですのでPHPにDOMXMLモジュールがインストールされていなければなりません。 DOMXMLモジュールは標準で組み込まれるモジュールではないので環境によってはインストールされていません。 確認してみてください。
お礼
open_mem関数というのは、PHP4で主に使われていた 関数のようでした。 ただ、XMLの拡張をしていなければ 動かないというのも事実なので、 解決策は別のものでしたが 回答をして頂けて本当に嬉しかったです。 ありがとうございました。
補足
回答ありがとうございます。 infoで出力をしてみたのですが 下記のようにDOM拡張はしてあるのですが DOMXMLモジュールはこれとは別のものなのでしょうか。 ≪dom≫ DOM/XML enabled DOM/XML API Version 20031129 libxml Version 2.6.22 HTML Support enabled XPath Support enabled XPointer Support enabled Schema Support enabled RelaxNG Support enabled 申し訳ありません、お返事お待ちしております。
お礼
ごめんなさい! load()ではなく、loadXML()と記述していただいていたのに 見落としてしまっていました。 loadXML()できちんと、文字列にしたXMLを受け取れました。 ありがとうございました。
補足
回答ありがとうございます。 実は、現在制作しているものの関係上 既存XMLのタグ内の文字列にある記号を <br />タグに変換をさせて XSLT変換をかけてHTMLにはきだしたと思っています。 なので、提案して頂いたものでは記号がそのまま表示 されて改行が行われないという事態が起きてしまい、 次のようなPHPを書いたのですが、open_memでエラーが 返ってきてしまい、今回ご質問をさせて頂きました。 $changedbr = ""; $open = fopen(XMLFILE, "r") or die("ファイルを読み込めません"); while (($xml = fgets($open))) { $changedbr = str_replace("", "", $xml); //echo $changedbr; } $openxml = domxml_open_mem($changedbr); //※domxml_部分を省いても同じエラーが帰ってきました。 $xslt->load(XSLTFILE) or die("ファイルを読み込めません"); $pro = new XSLTProcessor(); $pro->importStylesheet($xslt); $pro->transformToUri($doc, HTMLFILE); もっと、最初に細かく説明すべきだったと反省しております。 やはり、DOMXML関数とDOM関数とは違うものなのでしょうか。 私自身、PHP自体ここ2、3ヶ月ほど前に勉強だしたという超初心者です。 よろしければ、教えて頂けると嬉しいです。 申し訳ありませんが、よろしくお願いします。