【PHP】下らねぇ質問はID出して書き込みやがれ 102
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2010/12/18(土) 20:07:33ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 101
http://hibari.2ch.net/test/read.cgi/php/1289793607/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0232nobodyさん
2010/12/31(金) 14:59:50ID:8g3NYefk原因はMod_reqriteで、リンクが通ってないリクエストがIndex.phpにきてた事が判明しました。
お騒がせしました。
0233nobodyさん
2010/12/31(金) 15:20:47ID:???Webサイト制作初心者用質問スレ part222
http://hibari.2ch.net/test/read.cgi/hp/1291304974/
こちらへどうぞ
0234nobodyさん
2010/12/31(金) 15:24:44ID:XYm/hF3eありがとうございました
そちらで聞いてみます
0235nobodyさん
2010/12/31(金) 16:56:48ID:jORx8XGQMySQLから取り出してきた、
$shin[date] (ex.2010-12-31、date型)
に、
$kankaku[interval_t@] (@は1~20、中身はint型)
の数字の分だけ、●ヶ月先の計算をしたいです
こんな風に書いてるのですが文法エラーとなります、どう書けば良いかご教示ください。
($kankaku[interval_t@]を普通の数字に置き換えるとokなのですか)
for($loop=1;$loop<=20;$loop++){
$nextdate0 = date("Y-m-d", strtotime("$shin[date] + $kankaku['interval_t'.$loop] month"));
print "$nextdate0";
}
0236nobodyさん
2010/12/31(金) 17:07:11ID:???0237nobodyさん
2010/12/31(金) 17:14:08ID:???他に原因があるかもしれないが、とりあえず
$nextdate0 = date("Y-m-d", strtotime("{$shin['date']} + {$kankaku['interval_t'.$loop]} month"));
0238nobodyさん
2010/12/31(金) 17:15:45ID:???一応、検証に使ったソース
<?php
$shin['date'] = '2010-12-31';
$kankaku['interval_t1'] = 1;
$loop = 1;
$nextdate0 = date("Y-m-d", strtotime("{$shin['date']} + {$kankaku['interval_t'.$loop]} month"));
print $nextdate0;
?>
0239nobodyさん
2010/12/31(金) 17:17:09ID:???$nextdate0 = date("Y-m-d",strtotime($shin['date'].' + '.$kankaku['interval_t'.$loop].' month'));
まだこうしろよ・・・
0240nobodyさん
2010/12/31(金) 17:38:59ID:???言われてみればその通りですね;;
>>237-239
それぞれに分解して書けば良かったのですね。ありがとうございます!
0241nobodyさん
2011/01/01(土) 00:13:17ID:???0242nobodyさん
2011/01/01(土) 00:42:44ID:???http://hibari.2ch.net/test/read.cgi/php/1289117484/l50
0244nobodyさん
2011/01/01(土) 00:46:40ID:kBOtcIS2あるサイトで得られるHTMLにて、「href="〜"」の"〜"部分を抽出したいです。
いろいろと試してみましたが、サイトにあわせたコーディングが求めらてしまいました。
自分の拙さ(つたなさ)が理由で、サイトにあわせたコーディングをしていると思います。
お勧めのサンプルや、お勧めの関数などがあれば、教えてもらえれば嬉しいです。
0245nobodyさん
2011/01/01(土) 00:47:30ID:kBOtcIS20246nobodyさん
2011/01/01(土) 00:52:42ID:???http://hibari.2ch.net/test/read.cgi/tech/1268979408/
0248nobodyさん
2011/01/01(土) 00:59:37ID:???http://jp.php.net/manual/ja/domdocument.loadhtmlfile.php
0249nobodyさん
2011/01/01(土) 01:31:33ID:???// 読み込むファイル
$filename = "test.html";
$doc = new DOMDocument();
$doc->loadHTMLFile($filename);
$a = $doc->getElementsByTagName("a");
for($i = 0; $i < $a->length; $i++) {
var_dump($a->item($i)->getAttribute("href"));
}
0254nobodyさん
2011/01/01(土) 15:29:42ID:xdZw+o32$PATH = "../".$_POST['ttm']."/";
$TEMPPATH = $PATH."html/";
とあるのですが、これの../とはどういう意味なんでしょうか?
0256nobodyさん
2011/01/01(土) 15:42:42ID:xdZw+o32../だけで一つ上の階層を出力できるなんて便利ですね!
0258nobodyさん
2011/01/01(土) 19:16:47ID:xdZw+o32<form method="post" action="./test.php">
の場合はドットが1つなんですがこの場合は「今扱っているファイルの一つ上の階層のディレクトリにあるtext.php」
ということになるのでしょうか?
ドット1個と2個の違いがどうも
0260nobodyさん
2011/01/01(土) 20:37:57ID:???../ 1個上
../../ 2個上
../../../ 3個上
つうかPHPの質問とちゃうで
相対パスはWebサイト作りの基礎やで
0261nobodyさん
2011/01/01(土) 20:44:10ID:xdZw+o32道理でphpのサイトめぐっても見当たらない訳やで!
ホンマ助かりますわー!
0262nobodyさん
2011/01/01(土) 20:52:36ID:???0263nobodyさん
2011/01/01(土) 22:28:36ID:Uob5Bi4b【PHPのバージョン】5.3.1
【連携ソフトウェア】MySQL, XAMPP
【XAMPPのバージョン】Windows ver 1.7.3
【MySQLバージョン】5.1.41
【MySQL文字セット】UTF-8 Unicode (utf8)
【MySQLの照合順序】utf8_unicode_ci
【質問内容】
DBから取得した全角文字が文字化けします。
解決策を教えてください。
【詳細】
1.MySQLに登録されたデータを取得する。
$res_result = mysql_query($sql);
2.連想配列に格納し、その結果をprintで出力する。
[ソース]
$mojicode = mb_detect_encoding($value);
print "$value の文字コードは $mojicode です。";
[結果]
$$rows[def]=???
??? の文字コードは UTF-8 です。
と半角文字は正しく出力されるのですが、全角文字が?で表示されます。
長文すみません、宜しくお願いします。
0264263
2011/01/01(土) 22:30:16ID:Uob5Bi4b追加情報です。
【PHP.iniの設定】
mbstring.detect_order:UTF-8,SJIS,EUC-JP,JIS,ASCII
mbstring.encoding_translation:Off
mbstring.func_overload:0
mbstring.http_input:pass
mbstring.http_output:UTF-8
mbstring.internal_encoding:UTF-8
mbstring.language:Japanese
mbstring.strict_detection:Off
mbstring.substitute_character:no value
【PHPファイル】
<meta 〜 "text/html; charset=UTF-8" />
ファイルの文字コード:UTF-8 BOMなし
宜しくお願いします。
「半角文字は正しく出力される」というのはどれのこと?
あと、そのときブラウザの表示文字エンコードは何になってる?
エンコードを他の物に切り替えると???の部分が正しく表示されるってことはない?
0268nobodyさん
2011/01/01(土) 23:44:40ID:???MySQLはクライアント側も別途エンコーディング指定が必要
mysqli_set_charset($db, "utf8")
mysqliが無いならSET NAMESとか。
ちなみに"???"がUTF-8と判定されるのはdetect_orderのせい
0269263
2011/01/02(日) 00:07:31ID:sCIW7Ij+ご返答ありがとうございます。
ブラウザの表示文字エンコードは、
Unicode(UTF-8)です。
これは、PHPのmeta情報に
<meta 〜 "text/html; charset=UTF-8" />
と記載しているからだと認識しています。
また、ファイルの文字コードもUTF-8です。
> 「半角文字は正しく出力される」
すみません。半角文字の結果を消していました。正しくは下記をみてください。
【表示文字エンコード:Unicode(UTF-8)】
$$rows[abc]=GAME
GAME の文字コードは UTF-8 です。
$$rows[def]=???
??? の文字コードは UTF-8 です。
【表示文字エンコード:日本語(EUC)】
⇒文字化けします。
$$rows[abc]=GAME
GAME ・絖潟若 UTF-8 с
$$rows[def]=???
??? ・絖潟若 UTF-8 с
【表示文字エンコード:日本語(シフトJIS)】
⇒画面に何も表示されなくなります。
0270263
2011/01/02(日) 00:15:11ID:sCIW7Ij+ご返答ありがとうございます。
調べて確認してみます。
detect_orderは始めコメントアウト化されており、
DBから取得した結果がASCIIになっておりました。
DBとの文字コードを合わせる必要があると思い、
detect_orderにUTF-8を指定しましたが、
問題ありますか?
コメントアウト化されていた時から既に
printした結果が???と文字化けされていました。
0271nobodyさん
2011/01/02(日) 00:17:06ID:???もし正しいデータが入ってるとすれば正しく取り出せてないのかもな
0272nobodyさん
2011/01/02(日) 00:18:24ID:???0273263
2011/01/02(日) 00:50:50ID:sCIW7Ij+おっしゃる通り、
SET NAMESを使用する事で解決しました。
[変更前ソース]
$db = mysql_select_db( $dbName, $res_dbcon );
$res_result = mysql_query($sql);
[変更後ソース]
mysql_query("SET NAMES utf8");
$db = mysql_select_db( $dbName, $res_dbcon );
$res_result = mysql_query($sql);
[変更後の結果]
$$rows[abc]=GAME
GAME の文字コードは UTF-8 です。
$$rows[def]=ゲーム
ゲーム の文字コードは UTF-8 です。
助かりました、本当にありがとうございました。
>>266-272
ご返答頂けた方々、ありがとうございました。
0274263
2011/01/02(日) 00:56:36ID:sCIW7Ij+お礼と返答です。
>>271
ご返答ありがとうございます。
テーブルのキャラセットとは何を指すのでしょう?
照合順序はutf8_unicode_ciで、列の種別はtext型です。
>>272
ご返答ありがとうございます。
nkfではありませんが、
PHP上でmb_convert_encodingを使用し文字コードを変換した場合、
結果は変わらず文字化けしたままでした。
0275nobodyさん
2011/01/02(日) 01:02:29ID:???SET NAMES でもとりあえずは問題ないだろうけど、
PHP5.3なら mysql_set_charset() を使用したほうがいい。
理由は過去スレまたはググってください。
0276nobodyさん
2011/01/02(日) 01:04:22ID:???注意:
文字セットを変更するにはこの方法を使うことを推奨します。 mysql_query() で SET NAMES .. を実行する方法はお勧めできません。
0277nobodyさん
2011/01/02(日) 01:05:15ID:???テーブルのキャラクタセットと言われてわからないってことは別の人がDB初期設定やってるだろうから
説明は差し控える
はっきり言って>>264にある設定なんてmeta以外はやらなくてもいいようなどうでもいい設定だがな
0278nobodyさん
2011/01/02(日) 01:07:24ID:???MySQLの照合順序をutf8_unicode_ciにしていても
Tableの定義でそのフィールドの照合順序が異なる設定になっている場合があるので
確認したほうがいいという意味だろう。
0279nobodyさん
2011/01/02(日) 01:17:16ID:???いや、SET NAMES はクライアントが使用する文字コードをMySQLに
通知するのが目的だからTableのキャラクタセットの設定とは異なる。
MySQLはクライアントから送信された文字を既定の文字コードとして
解釈し、照合順序で設定したキャラクタセットに勝手に変換する。
読み出す場合はその逆。
0280263
2011/01/02(日) 01:32:59ID:sCIW7Ij+>別の人がDB初期設定やってるだろう
いえ、私がDBの設定を行っていますが、
phpMyAdminにキャラクタセットの項目が
見つからなかった為、お聞きしました。
>>278
なるほど、理解できました。
DBとTableの照合順序は統一しており、
再確認した結果、全て一致していました。
0281263
2011/01/02(日) 01:44:19ID:???ご指摘ありがとうございます。
確認したところSET NAMESは非推奨となっていました。
mysql_query("SET NAMES utf8");を
mysql_set_charset("utf8");に変更しました。
文字化けせずに正しく表示されました。
ありがとうございます。
(そろそろsageておきます)
0283nobodyさん
2011/01/02(日) 15:30:33ID:C0ta8JClおすすめできないと書いてるけどPDOじゃSET NAMESでやるしかないですよね?
0284nobodyさん
2011/01/02(日) 15:44:41ID:UqNSlP1V[環境]
共用レンタルサーバー
PHP 5.2.12
OS Linux 2.6.27.18-25
アパッチ 2.2.14
サーバープロバイダー ギガレンタルサーバー(ttp://gigasrv.jp/)
コンパネ cPanel X
[やりたいこと]
空メールでメンバー登録
[出来たこと]
メールを受信して、パイプを使ってその内容をスクリプトへ渡す。
[問題]
メールを送信した側に、次のようなエラーが返信されてしまいます。
このようなエラーを返信しないようにしたい。
※長いのでレスをまたがせていただきます。
0285284
2011/01/02(日) 15:46:20ID:UqNSlP1V-------- ▼ここからメール内容▼ ---------
This message was created automatically by mail delivery software.
A message that you sent could not be delivered to one or more of its
recipients. This is a permanent error. The following address(es) failed:
pipe to |/※スクリプトへのパス
generated by ※空メールのアドレス
The following text was generated during the delivery attempt:
------ pipe to |/※スクリプトへのパス
generated by ※空メールのアドレス ------
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/extensions/no-debug-non-zts-20060613/imagick.so' - libMagickWand.so.2: cannot open shared object file: No such file or directory in Unknown on line 0
X-Powered-By: PHP/5.2.12
Set-Cookie: CAKEPHP=e3bd5f3b116b2491e08f2c3ee81b48c0; expires=Mon, 10-Jan-2011 14:15:36 GMT; path=/
P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"
Content-type: text/html; charset=UTF-8
------ This is a copy of the message, including all the headers. ------
※以下、略
-------- ▲ここまでメール内容▲ ---------
.htaccess に php_flag display_errors Off を書いてもダメで、スクリプトに ini_set( "display_errors", "Off"); を追加してもモチロンだめでした。
サーバーの管理者に相談したほうが良いのでしょうか?
※熱っぽいのでこれから保健センターに行ってきます。返信が遅れるかもしれませんがどうかご容赦ください。よろしくお願いします。
0286nobodyさん
2011/01/02(日) 18:41:15ID:???0287284
2011/01/02(日) 19:24:17ID:UqNSlP1Vやはりそうですか。
ひとつ気になるのは、ブラウザでPHPを走らせた場合はもとより、Cron でPHPプロセスを起動した場合にも上記のようなメッセージを見たことがないことです。
なので、自分のやり方しだいではエラーを表示させないようにも出来るのではないかと思うのですが。
ちなみに、このエラーは PHP のセッティングに問題があると言う認識でよろしいのでしょうか。
答えをいただきながらの追加の質問ですが、お答えいただければ幸いです。
0288nobodyさん
2011/01/02(日) 19:41:56ID:jMmDteG70291nobodyさん
2011/01/02(日) 20:15:17ID:???0292nobodyさん
2011/01/02(日) 20:30:45ID:???代替手段としてコンストラクタに
PDO::MYSQL_ATTR_READ_DEFAULT_FILE と
PDO::MYSQL_ATTR_READ_DEFAULT_GROUP を渡せば可能
>>287
> libMagickWand.so.2: cannot open shared object file
って事だからMTAから起動した時の環境変数PATHが違うんだろうね
ちなみにPHP起動時のエラー表示に関係する設定は display_startup_errors
0294284
2011/01/02(日) 22:41:32ID:UqNSlP1V先ほどサポセンへ相談メールを送りました。
>display_startup_errors
あ、そうでした。
これも一応ダメもとで試しては見ましたがやはり結果は同じでした。
サポートの対応など状況が変化しましたら、また改めて報告させていただきます。
0296nobodyさん
2011/01/03(月) 00:53:11ID:???毎ページの広告をPHPで携帯とPC振り分けてみたのですが、
気にするほど負荷がかからない程度なのですかね?
0299nobodyさん
2011/01/03(月) 07:18:03ID:???0300nobodyさん
2011/01/03(月) 14:51:49ID:???0302nobodyさん
2011/01/03(月) 14:57:49ID:???0303nobodyさん
2011/01/03(月) 16:38:09ID:???0304nobodyさん
2011/01/03(月) 16:49:57ID:???0305nobodyさん
2011/01/03(月) 17:06:12ID:EiHgtjUUスレ違いならばご指摘ください。
とあるURLを file_get_html したら次のエラーが出されました。
Warning: file_get_contents( とあるURL )
[function.file-get-contents]: failed to open stream:
HTTP request failed! HTTP/1.1 403 Forbidden in simple_html_dom.php on line 39
ブラウザーで「とあるURL」を開くと問題なく開けます。
エラーの理由は何でしょうか?
また対処方法をご存知の方がいたら教えてください。
0306nobodyさん
2011/01/03(月) 17:12:06ID:???0307nobodyさん
2011/01/03(月) 17:15:19ID:???サーバ側がスクリプトからのアクセスを禁止してるから
ブラウザの挙動を再現してアクセスすれば取れると思う
cURLあたりを使えばいけるんじゃないかな
0308nobodyさん
2011/01/03(月) 17:19:59ID:???そういうサーバだと思って諦めるか
考えられる原因を追求して試行錯誤してみるしかないねえ
わざわざ禁止にしてる管理者に聞いても原因は教えてくれないだろう
原因はいくつか考えられるけどクッキー食わせないとだめだったりしてるのかもな
0311nobodyさん
2011/01/03(月) 20:35:01ID:???どうせAjaxも理解できないここの連中にはわかりゃしないんだから。
0313nobodyさん
2011/01/03(月) 20:58:10ID:EiHgtjUU<?php
require_once( "php-lib/simple_html_dom.php" );
//
function urlHref( $orgurl )
{
$html = file_get_html( $orgurl );
foreach( $html -> find( "a" ) as $element ) {
$urllist[ ] = $element -> href;
}
return $urllist;
}
//
{
$urllist = urlHref( "http://hibari.2ch.net/test/read.cgi/php/1292670453/" );
sort( $urllist );
var_dump( array_unique( $urllist ) );
//
$urllist = urlHref( "http://logsoku.com/thread/hibari.2ch.net/php/1279833891/" );
sort( $urllist );
var_dump( array_unique( $urllist ) );
}
?>
0314nobodyさん
2011/01/03(月) 21:50:56ID:???まさかと思うが allow_url_fopen は On になってんのか?
PHPのバージョンは?
simple_html_dom.php を使わずに file_get_contents 関数を直接使ったらどうなった?
0315nobodyさん
2011/01/03(月) 22:00:01ID:???1件目では目的を達しているが、
2件目でNGだと言いたいのでは?
片方がOKで片方がNGならば、対象のサイトとの相性?
どんな相性なんだろう?w
0316nobodyさん
2011/01/03(月) 22:04:44ID:???0317nobodyさん
2011/01/03(月) 22:07:16ID:EiHgtjUUちなみに、俺も自分の環境で実行したら1件目は問題ないが、2件目は同じエラーが file で出されました。
<?php
{
$urllist = file( "http://hibari.2ch.net/test/read.cgi/php/1292670453/" );
var_dump( $urllist );
//
$urllist = file( "http://logsoku.com/thread/hibari.2ch.net/php/1279833891/" );
var_dump( $urllist );
}
?>
0318nobodyさん
2011/01/03(月) 22:10:17ID:???単にブラウザ以外からのアクセスは403返してるだけじゃないの?
0319nobodyさん
2011/01/03(月) 22:10:29ID:???file_get_contents でも同じ結果。
2つ目の http://logsoku.com/thread/hibari.2ch.net/php/1279833891/ が取得できないね。
0320nobodyさん
2011/01/03(月) 23:11:36ID:???タイトル部分が
<MMString:LoadString id="insertbar/linebreak" />
となっているのですが、これはどのような意味があるのでしょうか?
消して、普通に、店の名前を打っても良いのか悩んでおります。
0322nobodyさん
2011/01/03(月) 23:12:28ID:???0323nobodyさん
2011/01/03(月) 23:16:01ID:???0324nobodyさん
2011/01/03(月) 23:21:05ID:???Adobe Dreamweaver CS4 * ローカライズされるストリングの提供
http://help.adobe.com/ja_JP/Dreamweaver/10.0_Extending/WS5b3ccc516d4fbf351e63e3d117f508c8de-7ffe.html
Dreamweaverを引き継いでいないなら、消してしまっていいよ
あとPHP関係無いから。
0325320
2011/01/03(月) 23:54:06ID:???PHP関係なく、Dreamweaverだったのですね・・・・
Dreamweaverは私も持ってますが、パソコンが違うので、バージョンは異なるかもです。
私はCS3を使ってます。
ローカライズされるストリングの提供 っというのがちょっと難しくて、どういうメリットデメリットがあるのか?消して普通にタイトルつけていいのか分からないので勉強してみます;;
ありがとうございました。
0326nobodyさん
2011/01/04(火) 00:08:40ID:???0327nobodyさん
2011/01/04(火) 00:25:15ID:???0329nobodyさん
2011/01/04(火) 00:26:20ID:???IDを出すのはルール
0330nobodyさん
2011/01/04(火) 01:55:58ID:???IDを出すのがルールなら答える側もそれを守れってんだ
てめぇの善意なんかいらねぇっつーの
0331nobodyさん
2011/01/04(火) 02:59:06ID:???■ このスレッドは過去ログ倉庫に格納されています