【PHP】下らねぇ質問はID出して書き込みやがれ 91
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2009/12/08(火) 13:53:09ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 90
http://pc11.2ch.net/test/read.cgi/php/1258187482/
◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0244nobodyさん
2009/12/13(日) 20:27:15ID:???あなたは他力本願なんですよ
0245nobodyさん
2009/12/13(日) 20:29:05ID:???0246nobodyさん
2009/12/13(日) 20:31:13ID:???OKwaveだ
0247196
2009/12/13(日) 20:31:58ID:iFkYaR3Pあなたも学習してください。
>>229では2>4みたいな意味不明なレスにもマッチします。
私のは下らない質問ですが、下らない回答はいいです。
0248nobodyさん
2009/12/13(日) 20:32:03ID:???0251nobodyさん
2009/12/13(日) 20:36:02ID:???229 名前:nobodyさん[sage] 投稿日:2009/12/13(日) 18:20:12 ID:???
>>277
君も頑固だねpreg_matchじゃダメっていってるのに
これ試験にでるお
0253nobodyさん
2009/12/13(日) 20:36:26ID:???0254196
2009/12/13(日) 20:37:51ID:iFkYaR3P見逃していました。
私が求めていたのはあくまでも2,4などの簡素なものですが、これで解決しそうです。
唯一の有効な回答をありがとうございました。
0255196
2009/12/13(日) 20:39:07ID:iFkYaR3P0257nobodyさん
2009/12/13(日) 20:41:29ID:???なにかallって言葉にコンプレックスでもありそうだなw
0258237
2009/12/13(日) 20:42:39ID:???何でpreg_matchを使わないでpreg_match_allを使ったのかを勉強することをおすすめします
0259nobodyさん
2009/12/13(日) 20:42:48ID:???0261196
2009/12/13(日) 20:51:19ID:iFkYaR3Pそもそも、私は複雑なレス指定を望んでいないわけですから>>を取り除くと2,4,6となりますよね?
それを2と4と6に分けるくらい、preg_match_all()でなくてもおそらくできるでしょうって訳です。
preg_match_all()の勝手なイメージとしてはたとえば
$body = <<<TEXT
>>2-4
>>4-6
>>6,9
TEXT;
のように本文中に複数現れるケースに使用することが好ましいと考えています。
単純な文字列分解ごときにallつける必要があるの勝手ことです。
0263nobodyさん
2009/12/13(日) 20:59:02ID:???0264237
2009/12/13(日) 21:22:38ID:???例えばなんですが
>>1
2
3
>>4
というように一行目に>>1で二行目はただの数字だけ・・みたいに検索対象の文字列が固定されてあればpreg_matchで可能です
ただ、>>196さんの残したレスを見る限りではそうではないように見えるのでpreg_matchは適さないんです。
>>227でpreg_match('/(\d+)(,|-|\d+){1,}/', '2,6,18,11', $match);と書いてあるのに
>>247で2>4のようなパターンも登場してます
レス指定にマッチするのは「頭に必ず>がきて(>+)、その後に数字(\d+)、その後にハイフンが来るかもしれない(\-?)、ハイフンが着たら番号が来るかもしれない(\d*)」となります
0265196
2009/12/13(日) 21:47:42ID:iFkYaR3P私の説明不足です。
既に、レスを抜き出す処理は完成しています。
抜き出した数値を、パラメータとして渡すのですが、そこのバリデーションでの話です。
2>4は>>229のコードでは不完全だということを表すために提示しただけです。
これにはマッチしないでねーってことです。
あくまで欲しているのは>>2,4,9などから数値を抜き出せるコードで、
>>2-5などの指定にマッチする処理は、必要としていません。
分かりやすいように質問を変えますが、
2,4,6から数値を抜き出す表現を教えていただけますか?
数値は2,4,6,8のように増えることもありますし、2,4のように2つのみの場合もあります。
この場合においてもallなのでしょうか?
0269237
2009/12/13(日) 22:18:01ID:???preg_matchはマッチしたら処理が終わります
>>196さんが求める処理はpreg_match_allを使って繰り返し検索を行う必要がありのでpreg_matchでは無理です
>>2,4,9という感じで文字列が現れるルール
preg_matchで/>+(\d+),(\d),(\d)/という風に検索対象の文字列に合わせて正規表現パターンを書かないといけないです
でも2,>>4,9という文字列が現れるかもしれませんね
なので/>*(\d+),>*(\d),>*(\d)/という風に正規表現パターンを改良します
ただ、これまでの正規表現パターンでは>>2,3,4,2,>>4と文字列が長くなってくると対応できません
文字列の長さに合わせて正規表現パターンも書き直さないとだめなんですよ
preg_matchは最初にマッチした時点で処理が終了するのでしょうがないんです
なのでこのように文字列の長さが決まって無くてもいいようにマッチしても処理が終了しないようなことがしたいわけです
そこでpreg_match_allがでるんです
preg_match_allを使うことで>>2,3,4の時も>>2,3,4,5,6,>>2の時も対応できます
0270nobodyさん
2009/12/13(日) 22:26:04ID:???質問することは恥ずかしいこととは思ってないので前向きに頑張ってください
>>2,4,9
の文字列から
正規表現で2,4,9を取得したい
と求める「結果」を最初に書いていただきたかったです
0271nobodyさん
2009/12/13(日) 22:35:13ID:???対象文字列がどういう範囲で変わるかぐらいは書かないと
0272196
2009/12/13(日) 22:41:04ID:iFkYaR3P大変分かりやすかったです。
ただ、>>265の通りそのような単純ではないレス指定は想定していませんので、無視してください
最後にこの解説だけをお願いします。
なぜ、18が欠落するのでしょうか?
<?php
preg_match('/^(\d+)(?:,(\d+))+$/', '9,18,11', $match);
print_r($match);
//Array ( [0] => 9,18,11 [1] => 9 [2] => 11 )
0276nobodyさん
2009/12/14(月) 01:02:33ID:???0277nobodyさん
2009/12/14(月) 01:07:25ID:???^(\d+) が 先頭からだから9
(?:,(\d))$ が 最後にマッチだから ,11 にマッチだけど、非格納グループなので入らず
(\d++) の部分の 11 がマッチにはいると。
http://www.rider-n.sakura.ne.jp/regexp/regexp.php
ここで、いろいろいじって遊ぶといいよ。
0279nobodyさん
2009/12/14(月) 01:28:18ID:???吹いたわksg
0280nobodyさん
2009/12/14(月) 02:14:08ID:???>>196はpreg_matchを一から勉強して理解しろ
あと単純な区切りを取得したいならmb_splitでも使っておけば?頭悪そう
0281nobodyさん
2009/12/14(月) 07:06:50ID:h0EDfnnM<div id="hoge">
<div id="fuga">fugaの内容</div>
hogeの内容
</div>
このようなドキュメントから
hogeの内容の部分だけを取り出したいのですが、
$xpath = new DOMXpath($dom);
$results = $xpath->query(//div[@id="hoge"]);
var_dump($results->item(0)->nodeValue);
とすると、fugaの内容もふくまれてしまいます。
hogeの内容の部分だけを取り出すには、どうしたらよいでしょうか?
よろしくお願いします。
0282nobodyさん
2009/12/14(月) 08:20:24ID:???hogeはfugaを内包しているのだから正しい挙動。
「ドキュメント」の構造を見直しましょう。
「ドキュメント」の構造ママ、文字列「hogeの内容」を取り出したいってなら、旬のpreg_matchで。
0285nobodyさん
2009/12/14(月) 10:42:14ID:???0286nobodyさん
2009/12/14(月) 12:33:46ID:???0287nobodyさん
2009/12/14(月) 12:45:39ID:???mb_internal_encoding( 'UTF-8');
mb_regex_encoding( 'UTF-8');
function mbStringToArray
( $string
)
{
$stop = mb_strlen( $string);
$result = array();
for( $idx = 0; $idx < $stop; $idx++)
{
$result[] = mb_substr( $string, $idx, 1);
}
return $result;
}
0290nobodyさん
2009/12/14(月) 13:13:41ID:???いや、ぼくちんはmb_split反対派なんでw
mb_splitでバリデーションと分割はできないつってるんですよーw
0291nobodyさん
2009/12/14(月) 13:15:30ID:???0292nobodyさん
2009/12/14(月) 13:17:21ID:???0293nobodyさん
2009/12/14(月) 13:18:08ID:Rd8pmwhFこれを
2009/12/6 10:21:20
に置き換える関数みたいなのはあるのでしょうか?
0294nobodyさん
2009/12/14(月) 13:21:24ID:???0295nobodyさん
2009/12/14(月) 13:23:49ID:???0296nobodyさん
2009/12/14(月) 13:28:24ID:???21は無視した。
0297nobodyさん
2009/12/14(月) 13:46:37ID:Rd8pmwhF21は間違いコピペでした・・・すいません・・・
0298nobodyさん
2009/12/14(月) 14:08:28ID:???0299nobodyさん
2009/12/14(月) 14:12:44ID:???横鳥スンナ〜
0301nobodyさん
2009/12/14(月) 16:36:42ID:EQ57m/rj静止画になってしまいます
これはどうしたら解決するでしょうかヨロシクお願いします<m(__)m>
環境 FEDORA
PHP Version 5.2.10
gd
GD Support enabled
GD Version bundled (2.0.34 compatible)
FreeType Support enabled
FreeType Linkage with freetype
FreeType Version 2.3.7
T1Lib Support enabled
GIF Read Support enabled
GIF Create Support enabled
JPG Support enabled
PNG Support enabled
WBMP Support enabled
XPM Support enabled
XBM Support enabled
0302nobodyさん
2009/12/14(月) 18:54:19ID:???検索したのかい?
ttp://www.google.co.jp/search?q=gd+php+gif+%E3%82%A2%E3%83%8B%E3%83%A1&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a
このページのトップに君が探してるものが見当たるようだけど
0303nobodyさん
2009/12/14(月) 18:59:58ID:EQ57m/rjGD Version bundled (2.0.34 compatible)なので、
GIF問題はすでに解決しているのではないでしょうか?
なので、何か設定の問題なのかと思い質問させてもらいました。
0304nobodyさん
2009/12/14(月) 19:06:34ID:???素晴らしい検索エンジンは惜しみなく使いましょう
ttp://idocsq.net/page/162
0305nobodyさん
2009/12/14(月) 19:42:10ID:???0306nobodyさん
2009/12/14(月) 19:59:03ID:???もちろん、animeGIFの書き出しのその関数にPHPは対応して無いし。
0307nobodyさん
2009/12/14(月) 21:49:24ID:???一応GDでアニメGIF(圧縮してない形式)のリサイズだけは出来るみたいだけど
それ以外はほとんど対応してないみたい
一応リサイズは出来るはずなんだけど
0308nobodyさん
2009/12/15(火) 10:56:38ID:k1G/c/jQ$testの前3文字が「abc」の時、trueにして一致しない場合はfalseにしたいと思います。
どういう関数を使えばよいのでしょうか?
strpo($test,"abc")==0
としてみたのですが、上手く行きませんでした。
0309nobodyさん
2009/12/15(火) 10:58:55ID:???strpo
strpo
strpo
strpo
strpo
strpo
strpo
strpo
strpo
strpo
strpo
strpo
0310nobodyさん
2009/12/15(火) 10:58:56ID:???0311nobodyさん
2009/12/15(火) 11:06:39ID:k1G/c/jQ出来ました!
=を3つにしなければいけないんですね。ありがとうございます。
0312nobodyさん
2009/12/15(火) 12:58:25ID:???0313nobodyさん
2009/12/15(火) 14:15:17ID:???0315nobodyさん
2009/12/15(火) 14:44:56ID:???0316nobodyさん
2009/12/15(火) 14:51:30ID:???<?php
$mystring = 'abc';
$findme = 'a';
$pos = strpos($mystring, $findme);
// === を使用していることに注目しましょう。単純に == を使ったのでは
// 期待通りに動作しません。なぜなら 'a' が 0 番目 (最初) の文字だからです。
if ($pos === false) {
echo "文字列 '$findme' は、文字列 '$mystring' の中で見つかりませんでした";
} else {
echo "文字列 '$findme' が文字列 '$mystring' の中で見つかりました";
echo " 見つかった位置は $pos です";
}
?>
0317nobodyさん
2009/12/15(火) 15:23:32ID:oEMc2L99どこを弄ればいいんでしょうか
よろしくお願いします
http://q.hatena.ne.jp/1161496002
0318nobodyさん
2009/12/15(火) 15:25:14ID:???【 スクリプト改造依頼スレ】(丸投げ) part7再々
http://pc11.2ch.net/test/read.cgi/php/1222645553/
0319nobodyさん
2009/12/15(火) 16:16:22ID:HMx+PrJaarray(1,2,4,5,7)
array(2,5,8,9,10)
→2,5
っていうようなことをやりたいのですが。1個ずつ確認していくしかない?
0320nobodyさん
2009/12/15(火) 16:29:32ID:???0321nobodyさん
2009/12/15(火) 16:32:05ID:???調べたらarray_intersectがあった
0322nobodyさん
2009/12/15(火) 16:39:07ID:HMx+PrJa>321
天才!ありがと〜
0323nobodyさん
2009/12/15(火) 18:21:21ID:???function set_node($parent,$treeNode){
global $db,$stt;
$flag=FALSE;
$rs=$db->execute($stt,$parent);
while($row=$rs->fetchRow(DB_FETCHMODE_ASSOC)){
$flag=TRUE;
$mid="m".$row['mid'];
$$mid=new HTML_TreeNode( // ← ココです
array('text'=>$row['title'],'link'=>$row['link']));
$result=set_node($row['mid'],$$mid);
if($result){
$$mid->setOption("icon","folder.gif");
$$mid->setOption("expandedIcon","folder-expanded.gif");
}
$treeNode->addItem($$mid);
・・・
質問させて下さい
上記の$$mid=new HTML_TreeNode( )のような、$$はいったいどういう事なのでしょうか?
マニュアルやgoogleで単に「$$」で検索しても出てきません
意味と、こういうものの名称を教えて下さい
0324nobodyさん
2009/12/15(火) 18:29:43ID:???$$mid = "world";
print $hello;
0325nobodyさん
2009/12/15(火) 18:31:10ID:???0326nobodyさん
2009/12/15(火) 19:41:19ID:???あまり使うべきじゃないとか?
0327nobodyさん
2009/12/15(火) 19:46:04ID:???0328nobodyさん
2009/12/15(火) 19:49:22ID:???$items = array("name","tel","address");
foreach ( $items as $eachval ) {
if ( isset( $_POST( $eachval) ) {
$$eachval = $_POST[ $eachval ];
}
}
ってやってごまかしたなぁ。
0329nobodyさん
2009/12/15(火) 20:30:50ID:???ビューのHTMLをパーツ化してて、ほとんどのコントローラで最終的に呼ばれるものがあります。
例えばページのメニュー表示の部分とか。
この中身が今は完全にべた書きになっていて、これをDBから取得した値に動的にしたいんだけど
これって全部のコントローラのコンストラクタ内にDB取得の処理入れなくちゃいけないものですか?
もしくはそれぞれアクションの中にとか。。
ただ、メニュー表示のHTMLが読み込まれない場合もあるので
コントローラ内で必ず取得しにいくってのも無駄だなぁって思ってます。
これはメニュー表示のHTMLが読み込まれた時だけ、ajaxで取得して書き換えるようにしといたほうがスマートですか?
なんかフレームワーク使ってなければ、必要なページでメニュー表示のPHPを読み込むだけで済むのにって思いました。
フレームワーク使うと、ビュー側でどうされてもいいように、コントローラ側で全対応しとかなきゃいけないのが
無駄が多いなぁと感じるんですが自分がフレームワークをよく理解してないせいでしょうか??
0330nobodyさん
2009/12/15(火) 21:08:49ID:???0333nobodyさん
2009/12/16(水) 00:07:08ID:???・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
テンプレどころかスレタイすら読めないやつって馬鹿なの?死ぬの?
0334nobodyさん
2009/12/16(水) 00:25:27ID:KyqIhUTU間違っていれば、ファイル削除失敗!!、というメッセージを出したいのですが、うまくいきません。
↓
<?php
$user_pass = "0000";
if($passwd == $_POST['pass']) {
unlink( "aaa.log");
echo "ファイルを削除しました";
}
elseif($passwd) {
echo "ファイル削除失敗!!";
}
?>
<form method="post" enctype="multipart/form-data" action="1.php" >
削除パス<input type="txt" size="10" name="pass" value="" maxlength="10" class="box" tabindex="2" accesskey="2" />
<input type="submit" value="削除" tabindex="4" accesskey="4" >
<input type="reset" value="Cancel" tabindex="5" accesskey="5" />
</form>
これをどうしたら良いでしょうか?どうぞヨロシクお願いします
0335nobodyさん
2009/12/16(水) 00:27:25ID:???0336nobodyさん
2009/12/16(水) 00:29:57ID:???これは何?
0337nobodyさん
2009/12/16(水) 00:34:35ID:???0338nobodyさん
2009/12/16(水) 00:49:50ID:KyqIhUTUif($passwd == $_POST['pass']) {
unlink( "aaa.log");
echo "ファイルを削除しました";
}
echo "ファイル削除失敗!!";
これにしたらできました
ありがとうございました
0339nobodyさん
2009/12/16(水) 00:51:52ID:???$passwd = "0000";
if($passwd == $_POST['pass']) {
unlink( "aaa.log");
echo "ファイルを削除しました";
}
else {
echo "ファイル削除失敗!!";
}
0340nobodyさん
2009/12/16(水) 00:52:44ID:H8S7D90g参考になればいいけど
http://www.geocities.jp/retort_curry119/TaskManage.htm
0341nobodyさん
2009/12/16(水) 01:04:17ID:???■ このスレッドは過去ログ倉庫に格納されています