PHP3を使っているんですが、どうしても動かせない関数があるので教えてください。
タイトルどおりの関数ですが、
parse_urlです。
リファレンスを見ると$parseurl=parse_url("http://xxx.xx.xx");ってな感じで動きそうなんですが、違うのでしょうか?

実行すると「そんな関数はない」ってエラーがでます。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

PHP3といっても古いバージョンではparse_url関数がなかったようです.3.0a3以降で追加されています.


最新版にバージョンアップしてみてはいかがでしょうか.

この回答への補足

アドバイスありがとうございます。
私の使用しているPHP3は3.0.15-i18n-jaです。
parse_urlはサポートされていないという事なんでしょうか。

補足日時:2000/12/02 00:07
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Qparse_ini_file関数について

parse_ini_file関数について質問させてください。
iniファイルの多次元配列の取得で悩んでいます。

sample.iniの内容
----------------------
0=aaa,bbb
1=ccc,ddd
2=eee,fff
----------------------

$ini = parse_ini_file('sample.ini', true);
として配列を取得しようとしたのですが、
print("{$ini[0][0]}");としてみると
欲しい結果は「aaa」ですが「a」となってしまいます。

また、print($ini[0]);とすると
結果が配列ではなく「aaa,bbb」のまま表示されてしまいます。

どうも配列として読み込んでないようです。
どなたかご教示していただけると助かります。
よろしくお願いします。

Aベストアンサー

使い方を間違えているかと思いますよ。

parse_ini_file()関数の2番目の引数は
http://jp.php.net/manual/ja/function.parse-ini-file.php
の通り、「セクション名と設定が含まれた多次元の配列を得ることができます。」とあるので、ご希望の二次元配列となるsample.iniは
----------------------
[0]
0=aaa
1=bbb
[1]
0=ccc
1=ddd
[2]
0=eee
1=fff
----------------------
と書く必要があります。

もし、書かれているsample.iniのように書きたいのでしたら、PHPでは、
$tmp = parse_ini_file( "sample.ini" );
foreach( $tmp as $key => $value ){
$ini[ $key ] = explode( ",", $value );
}
になるかと思います。

Qif (isset($_POST["body"]) && $_POST

if (isset($_POST["body"]) && $_POST["body"])の中の&& $_POST["body"]って必要ですか?
PHPのプログラムを読んでいて、以下のような部分を見つけました
if (isset($_POST["body"]) && $_POST["body"])

しかし、どうせisset($_POST["body"])でnullかどうか、値が入っているかどうかを確めているので、&& $_POST["body"]の部分は必要ないように思います。なぜこのような書き方をしているのでしょうか?

Aベストアンサー

 isset($_POST["body"])では値が入っているかどうかを調べていますが、値が何であるかは問いません。その値を判定しているのが二つ目の式です。
 PHPの論理判定では値が0の時に偽になり、それ以外の時は真になります。つまり、$_POST["body"]の値が0かどうかを判定しています。($_POST["body"] != 0)と同じです。

 判定式全体では、$_POST["body"]に0以外の値が入っている時に真になり、値が入っていないか0の時に偽になります。

Q$_POSTのものを$_GETとして使うのはなぜ?

http://www.phppro.jp/school/phpschool/vol19/2
こちらの講座にあるサンプルコードで分からないところがあります。

schedule_edit.phpのサンプルでは

if (isset($_POST["year"]) && is_numeric($_POST["year"])
&& $_POST["year"] > 2000) {
$year = $_POST["year"];

<form action="schedule_edit.php" method="post">
<input type="text" name="year" id="schedule-year"
value="<?php print(htmlspecialchars($year, ENT_QUOTES)); ?>" />
<label for="schedule-year" id="label-year">年</label>

formで入力されたデータはhtmlspecialchars($year, ENT_QUOTES)の$yearに格納され、
$_POST["year"]としてデータが渡り、
php側で$year = $_POST["year"];のように$_POST["year"]のデータが$yearに格納し直されています。わざわざ格納し直す理由も分からないのですが、一番知りたいところは
schedule_list.phpのサンプル内ではPOSTでなくGETで渡されているところです。

if ($schedule_date == date("Ymd", mktime(0, 0, 0, $_GET["month"],
$_GET["day"], $_GET["year"])))

$_POST["day"]ではなぜだめなのか分かりません。
この$_GET["year"]はschedule_edit.phpの$_POST["year"]を見ているわけではないのでしょうか。

http://www.phppro.jp/school/phpschool/vol19/2
こちらの講座にあるサンプルコードで分からないところがあります。

schedule_edit.phpのサンプルでは

if (isset($_POST["year"]) && is_numeric($_POST["year"])
&& $_POST["year"] > 2000) {
$year = $_POST["year"];

<form action="schedule_edit.php" method="post">
<input type="text" name="year" id="schedule-year"
value="<?php print(htmlspecialchars($year, ENT_QUOTES)); ?>" />
<label for="schedule-year" id="label-year">年</la...続きを読む

Aベストアンサー

> print("<td><a href=\"schedule_list.php?year=" .$year ・・・

schedule_list.phpにはGETパラメータで渡しているから、$_GET["year"]です。


> <form action="schedule_edit.php" method="post">
> <input type="text" name="year" ・・・

schedule_edit.phpにはPOSTパラメータで渡しているから、$_POST["year"]です。


>この$_GET["year"]はschedule_edit.phpの$_POST["year"]を見ているわけではないのでしょうか。

違います。schedule_edit.php と schedule_list.php は別々のプログラムです。

Q$str=mb_ereg_replace('goo','グッド',$str);

によって
$strの中の'good'を'グッド'に変更したいのですが
'good'は大文字と小文字を区別しないようにしたいのですがどうしたらいいでしょうか?
例えば
'goOd'も'グッド'にしたいのです。
PHPマニュアルには詳しい使い方が載っていないので困っています。

Aベストアンサー

大文字小文字を無視するなら
mb_eregi_replace
では?

参考URL:http://jp2.php.net/manual/ja/function.mb-eregi-replace.php

Qxml_parse_into_structを使うと、xmlの中のCDATAが消える

XMLデータを取得するプログラムをPHP5で製作しています。

以下、コーディング
-----------------------------------------------------------
$contents = file_get_contents($restURL);
$parser = xml_parser_create('UTF-8');
xml_parse_into_struct($parser,$contents,$values);
xml_parser_free($parser);
-----------------------------------------------------------


file_get_contentsでXMLデータの取得した時点では、例えば

 <img><![CDATA[<hogehoge>]]></img>

というふうにCDATAが格納されていることは確認できています。

しかし、xml_parse_into_structで配列構造体にXMLデータを格納すると、
 
[0] => Array
(
[tag] => IMG
[type] => complete
[level] => 4
[value] =>
)

という感じに、"value"の中の値が空になってしまいます。

xml_parse_into_structで"CDATA"が消えずに配列構造体される方法、
または、xml_parse_into_struct以外で"CDATA"が消えずに配列構造体に
設定される手法はありますでしょうか。

XMLデータを取得するプログラムをPHP5で製作しています。

以下、コーディング
-----------------------------------------------------------
$contents = file_get_contents($restURL);
$parser = xml_parser_create('UTF-8');
xml_parse_into_struct($parser,$contents,$values);
xml_parser_free($parser);
-----------------------------------------------------------


file_get_contentsでXMLデータの取得した時点では、例えば

 <img><![CDATA[<hogehoge>]]></img>

というふうにCDATA...続きを読む

Aベストアンサー

いや、(XMLの)認識のされかたとしては合ってる筈だよ。
ただ、その文字列を残したいというなら「XMLとしての規則」を守って「エスケープ」するなりしなきゃならないよ
具体的には不等号を実態参照化だね

そうじゃない場合は
2段変換しかないね。
1度テキストとして取り込んでcdataを何かしらに(プログラム上で一定の規則を持つなにかしらの文字列に)置換し、それをxmlとしてパース


このカテゴリの人気Q&Aランキング

おすすめ情報