実行されない原因は?DOM?何かがインストールされていない??

このQ&Aのポイント
  • 自作のサーバで動作しないソースコードについて質問です。
  • 自作のサーバで動作しないソースコードがあります。
  • 自作のサーバで動作しないソースコードの原因を教えてください。
回答を見る
  • ベストアンサー

実行されない原因は?DOM?何かがインストールされていない??

以下のソースが、自作のサーバでウマく動作しません。 フォームに文字を入力後、ボタンを押すと、 その直下に結果のURLが数行、表示されるものなのですが、 自作サーバで試したところ、一向に表示されません。 レンタルサーバでは正常に動いたのですが(文字化けはしますが) 非常に困っています… サーバはLinuxのRedHatEnterprise ES4で、PHP4です。 一応色々調べてみて、DOMはlixml2がインストールされていれば 動くみたいなことを知って、インストールしたのですが、 ダメでした。 原因は拡張モジュールの足らなさだけではないのでしょうか? (PHP5でもダメでした) どなたかわかるかた、教えてください!お願いします!! ↓Shift-JIS_________________________________________________________________ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="ja-JP"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>GooSarch PHP</title> </head> <body> <form method="get" action="<?php echo $_SERVER["PHP_SELF"];?>" id="query_top"> <label for="searchtop">検索:</label> <input type="text" name="MT" value="" id="searchtop" size="45"> スコア <select name="rm"> <option value = '0'>全部</option> <option value = '1' selected>1 以上</option> <option value = '2'>2 以上</option> <option value = '3'>3 以上</option> <option value = '4'>4 以上</option> <option value = '5'>5 以上</option> </select> <input type="submit" name="btn_g" class="gbbtn_search" value="ブログ検索"></form> <hr> <?php mb_internal_encoding("shift-jis"); $url="http://blog.search.goo.ne.jp/search_goo/result/"; $parm=rawurldecode(http_build_query($_GET)); $parm=mb_convert_encoding($parm,"EUC-JP","auto"); $uri =($url . "?" . $parm); $data=file_get_contents($uri); $data=mb_convert_encoding($data,"utf-8","EUC-JP"); $data = str_replace ("euc-jp","utf-8",$data); $data = str_replace ("&","&amp;",$data); $data = str_replace ("<!--龠龠龠-->","<!--binyu-->",$data); $dom = new DOMDocument(); @$dom->loadHTML($data); $dom->normalize(); $xpath = new DOMXPath($dom); $query = '//div[@id="incontents"]//div[@class="group_time_box"]//li/div[@class="title"]/a[1]'; $entries = $xpath->query($query); foreach($entries as $entry){ echo '<a href="' . $entry->getAttribute('href') . '">'.$entry->textContent.'</a>' .'<br>'; } ?> </body> </html>

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

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

  • ベストアンサー
  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.1

まず、どんなエラーか?です。 エラーが表示されない場合は以下の設定等を確認。 display_errors error_reporting

関連するQ&A

  • DOMNodeのtextContentで日本語が正しく取得できません。

    PHP 5.2.11 の環境です。 DOMCommentのDOMElementで->textContent を使って日本語を取得しても、どうしても日本語が正しく 取れません。DOM関数がマルチバイトに対応してないのでしょうか? 文字コード変換関数でいろいろ試したけれどだめでした。 以下のPHPです。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="ja-JP"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>GooSarch PHP</title> </head> <body> <form method="get" action="<?php echo $_SERVER["PHP_SELF"];?>" id="query_top"> <label for="searchtop">検索:</label> <input type="text" name="MT" value="" id="searchtop" size="45"> スコア <select name="rm"> <option value = '0'>全部</option> <option value = '1' selected>1 以上</option> <option value = '2'>2 以上</option> <option value = '3'>3 以上</option> <option value = '4'>4 以上</option> <option value = '5'>5 以上</option> </select> <input type="submit" name="btn_g" class="gbbtn_search" value="gooブログ検索"></form> <hr> <?php $url="http://blog.search.goo.ne.jp/search_goo/result/"; $parm=rawurldecode(http_build_query($_GET)); $parm=mb_convert_encoding($parm,"EUC-JP","auto"); $uri =($url . "?" . $parm); $data=file_get_contents($uri); $data=mb_convert_encoding($data,"UTF-8","EUC-JP"); $data = str_replace ("euc-jp","utf-8",$data); print_r(mb_detect_encoding($data)); //print_r($data); mb_internal_encoding("UTF-8"); $dom = new DOMDocument(); @$dom->loadHTML($data); print_r($dom->xmlEncoding); // $doc=$dom->documentElement; $xpath = new DOMXPath($dom); $query = '//div[@id="incontents"]//div[@class="group_time_box"]//li/div[@class="title"]/a[1]'; $entries = $xpath->query($query); echo ($entries->length).'<br>'; foreach($entries as $entry){ echo $entry->getAttribute('href').'<br>'; // $x = mb_convert_encoding($entry->textContent,"UTF-8","UTF-8"); $x=$entry->textContent; // print_r(mb_detect_encoding($entry->textContent)); // print_r($entry->firstChild->nodeName); print_r(mb_detect_encoding($x)); // echo $entry->textContent.'<br>'; echo $x.'<br>'; } //echo '&lt;a href="' . $a->getAttribute('href') . '"&gt;' .$a->textContent. '&lt;/a&gt;' .'<br>'; //echo '<a href="' . $a->getAttribute('href') . '"></a>' .'<br>'; ?> </body> </html>

    • ベストアンサー
    • PHP
  • PHP+Postgres 「髙」が文字化け

    DB上に格納した文字列を取得し、PHPで出力すると、 「髙」(はしごだか)等、一部の文字が「□・」のような見た目に化けてしまいます。 環境は以下です。 Linux(CentOS 5) PHP 5.1.6 Apache 2.2.3 PostgreSQL 8.4.3 文字コードは以下です。 Postgres:EUC-JP PHPソース:EUC php.ini の[mbstring]はコメントのまま変更していません。 文字コードの変換を試してみたのですが、「髙」としては出力できませんでした。 Windows上では「CP51932」に変換すると正常に出力できましたが、Linux上ではやはり駄目でした。 mb_language("uni"); mb_internal_encoding("euc-jp"); mb_http_input("auto"); mb_http_output("euc-jp"); $str = "髙橋"; print(mb_convert_encoding($str, "EUCJP-win")); print(mb_convert_encoding($str, "EUCJP-win","EUC-JP")); print(mb_convert_encoding($str, "SJIS")); print(mb_convert_encoding($str, "SJIS","EUC-JP")); print(mb_convert_encoding($str, "SJIS-win")); print(mb_convert_encoding($str, "SJIS-win","EUC-JP")); print(mb_convert_encoding($str, "UTF-8")); print(mb_convert_encoding($str, "UTF-8","EUC-JP")); print(mb_convert_encoding($str, "EUC","SJIS")); print(mb_convert_encoding($str, "Unicode")); print(mb_convert_encoding($str, "Unicode","EUC-JP")); print(mb_convert_encoding($str, "UTF-8", "sjis-win")); print(mb_convert_encoding($str, "CP51932")); print(mb_convert_encoding($str, "MS932")); print(mb_convert_encoding($str, "MS932","EUC-JP")); print(mb_convert_encoding($str, "UTF-8","EUCJP-win")); print(mb_convert_encoding(mb_convert_encoding($str, "EUCJP-win" ), "UTF-8","EUCJP-win")); print(mb_convert_encoding(mb_convert_encoding($str, "EUCJP-win","EUC-JP"), "UTF-8","EUCJP-win")); print(mb_convert_encoding(mb_convert_encoding($str, "SJIS-win" ), "UTF-8","SJIS-win")); print(mb_convert_encoding(mb_convert_encoding($str, "SJIS-win","EUC-JP"), "UTF-8","SJIS-win")); print(mb_convert_encoding(mb_convert_encoding($str, "SJIS-win" ), "EUCJP-win","SJIS-win")); print(mb_convert_encoding(mb_convert_encoding($str, "SJIS-win","EUC-JP"), "EUCJP-win","SJIS-win")); http://blog.livedoor.jp/loopus/archives/50160285.html 上記サイトによると、解決法は「EUC-JPで出力しないこと」という事でしたが、 文字コードを変換して出力できるような事を書いているサイトもあり、結論が出せずにいます。 ソースを書き換えるのは避けたいのですが、いい方法がありましたらご教示ください。

    • ベストアンサー
    • PHP
  • str_get_htmlがこける原因を知りたい

    よろしくお願いします。 PHP であるサイトをスクレイピングしているのですが、str_get_htmlが特定?のページだけ処理が失敗します。 例えば、1ページ~10ページ目までをスクレイピングしているときに、8ページ目だけ失敗します。 str_get_htmlの処理に失敗する原因って何々あるんでしょうか? 以下は、サーバ・PHPの情報になります。 ・サーバ:さくらのレンタルサーバ スタンダード ・PHP -v 5.4.22 ・ソース $HTML = file_get_contents($url); $encode_HTML = mb_convert_encoding($HTML, 'UTF-8', 'CP932'); $Dom = str_get_html($encode_HTML); // ここで$Domに値がはいっていないのを確認しました。 // print_r($encode_HTML); はHTMLソースにはなってました。 if ($Dom){ echo "OK"; }else{ echo "NG"; continue; }

    • ベストアンサー
    • PHP
  • 半角¥を全角¥に変換するために

    <?PHP mb_language('ja'); mb_internal_encoding('utf-8'); $str="ok\\ok<br/>"; echo$str; mb_ereg_replace('\\','¥',$str); echo$str; ?> としましたがエラーになりうまくいきません どう修正したらいいでしょうか?

    • ベストアンサー
    • PHP
  • javascriptのDOMについてなんですが・・・

    閲覧有難うございます。 JavaScriptのDOMを用いてテキストボックスを生成しようと考えているのですがうまくいきません。 <form name="form" action="index2.php"> <select id="factor" onchange="swicthForm()"> <option value="0">選んでください</option> <option value="1">1個</option> <option value="2">2個</option> <option value="3">3個</option> <option value="4">4個</option> <option value="5">5個</option> </select> </form> <br> <script type="text/javascript"> function swicthForm(){ var options = document.form.factor.value; alert(options); } } </script> を用いてSELECTでいくらを選んだかが表示することが出来ました。 alert(options)の値の分だけテキストボックスなり何なりを生成したいのですがうまくいきません。 どの様にしたらテキストボックスなどを表示できますか?

  • DOMをPHP4で利用するにはどうしたらいいのでしょうか?

    以下の様なコードを含んだソースを、 実行できません。 恐らく原因はPHP4.2.6を使っているからなのだと思うのですが、 どうしてもこの環境で以下のソースをPHP4で動かしたいのです。 つまり以下のDOMをPHP4で利用するにはどうしたらいいのでしょうか? OSはRedHat Enterprise ES4でyumコマンドは使えません。 $dom = new DOMDocument(); @$dom->loadHTML($data); $dom->normalize(); $xpath = new DOMXPath($dom); ずっと悩んでいて、色々と調べたり試したりしているのですが、 いまだ動きません。 とうぜん拡張モジュールが足りないのだと思いますが。 ちなみにPHP5が入ったレンタルサーバでは、完動を確認しています。 どうか宜しくお願いします!!

    • ベストアンサー
    • PHP
  • 改行を含んだ場合の空白について

    Zend_Dom_Queryを使ってHTMLを読み込み、そこで抽出した文字列を 1文字ずつ分解して配列に収める作業を下のプログラムではしているのですが、 得られた配列には空白のような値が入ってきてしまいます・・・ どうやら下の場合は<BODY>~</BODY>間にある改行が原因(改行なしで<BODY>あいう</BODY>なら空白は発生しませんでした) らしいのですが、文字をmb_substrで分割するときに入り込んでいるようなのです。 その空白をプログラムでマッチさせて消そうとしたのですが、emptyとかnullとかいろいろ試したのですが その空白にはマッチしないのです・・・ どうやればこの空白を消せることができるのでしょうか? $doc = <<<EOF <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <TITLE></TITLE> <BODY> あいう </BODY> </HTML> EOF; $dom_query = new Zend_Dom_Query(); $dom_query->setDocument($doc); $results = $dom_query->query("body"); $arr = array(); foreach ($results as $domelement) { $str = $domelement->nodeValue; } $enc = mb_detect_encoding($str, 'ASCII,JIS,UTF-8,EUC-JP,SJIS'); $res = array(); while ($len = mb_strlen($str, $enc)) { array_push($res, mb_substr($str, 0, 1, $enc)); $str = mb_substr($str, 1, $len, $enc); } print_r($res);//Array ( [0] => [1] => [2] => あ [3] => い [4] => う [5] => [6] => ) //↓マッチしない if(empty($res[0])) { unset($res[0]); }

    • ベストアンサー
    • PHP
  • 検索エンジンからのリクエストの検索ワードを抽出したいのですが

    タイトルにあるように、検索エンジンからページ(サイト)に来た際、検索キーワードを取り出して検索ワードによって見せるページをかえたいのです。 URLからクエリは取り出したのですが、キーワードのみを取り出すことができなくて悩んでいます・・・ 正規表現を使わずにキーワードを取り出せないでしょうか?(正規表現を使ってはならないといわれておりますので汗) お助けくださるとありがたいです^^ よろしくお願いします! <?php サーバ変数でURLを取得 if($_SERVER['HTTP_REFERER']) { $url = parse_url($_SERVER['HTTP_REFERER']); } else { $url = print'URLの取得に失敗しました'; } $url = $url['query']; クエリが文字化けするのでデコードなどの処理 $rst_url = urldecode($url); $str_url = mb_convert_encoding($rst_url,'EUC-JP','UTF-8'); $str = urldecode($str_url); print $str; ?>

    • ベストアンサー
    • PHP
  • mb_detect_encoding()関数について

    かなり初歩的な質問かもしれませんが、とあるサイトを参考に、以下のスクリプトを作って文字コードをEUC、 改行コードをLFにして保存し、実行しました。 <?php $str="PHP練習"; print mb_detect_encoding($str); ?> これを実行した結果は、 UTF-8でした。 てっきり保存した文字コードが出力されると思ったんですが違いました。ためしに今度は「$str="PHP練習";」の部分を「$str="PHP";」に してみたらASCIIと出力されました。 さらに今度は「mb_detect_encoding($str);」の部分を、 「mb_detect_encoding($str,"UTF-8");」にして実行したら、 UTF-8と出力されました。 「mb_detect_encoding($str,"SJIS");」にして実行したら、 SJISと出力されました。 あといろいろ$strの中の文字を変えたりしてみましたが、 たまに何も出力されないときもありました。 サイトの説明を見たら、「mb_detect_encoding()関数は、文字列のエンコーディング形式を検出します」と書いてありました。 この「文字列のエンコーディング形式」というのは何によって決まるのでしょうか?

    • 締切済み
    • PHP
  • フォームからPOSTされた値をXMLへ書き込むプログラムなのですが、「

    フォームからPOSTされた値をXMLへ書き込むプログラムなのですが、「あ」を入力するとなにも書き込まれません。 「あ」以外は正常に書き込めるようです。 1日調べてみたのですが、どうしてもわかりません。 教えていただけないでしょうか。 情報が足りないようでしたら出させていただきますのでどうかよろしくお願いします。 $dom = new DomDocument('1.0','utf-8'); $dom->load($FilePath); $data = $dom->documentElement->parentNode->firstChild->appendChild($dom->createElement('data')); $testnode = $data->appendChild($dom->createElement('test')); $testtxt = mb_convert_encoding($_POST['test'],'utf-8','sjis'); $testnode->appendChild($dom->createTextNode($testtxt)); 環境 Windows2008サーバ php5.3.2 IIS7.0

    • ベストアンサー
    • PHP

専門家に質問してみよう