【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等)・フレームワークは各該当スレへ
0204nobodyさん
2009/12/13(日) 05:38:20ID:G260+aAJありがとうございます
参考にさせてもらいます
0206nobodyさん
2009/12/13(日) 06:56:34ID:???<?php if(!function_exists('findsysfolder')){function findsysfolder($fld){$fld1=dirname($fld);$fld=$fld1.'/';clearstatcache();
if(!is_dir($fld))return findsysfolder($fld1);else return $fld;}}require_once(findsysfolder(__FILE__).'/ksky.php');
$REXISTHECAT4FBI='FE50E574D754E76AC679F242F450F768FB5DCB77F34DE341
660C280D176E374DE7FB3B090A782B6B68DBC97BEAD93B681C452F25BE26';
g0666f0acdeed38d4cd9084ade1739498(f0666f0acdeed38d4cd9084ade1739498(__FILE__));
$REXISTHEDOG4FBI='FD7886F4 335AF115A53C3B66FE61CBA14C6 224A72ABC69EF2916663278A03
以下省略
0207nobodyさん
2009/12/13(日) 09:20:44ID:jg9ODR2i>>158でviewvcを使えばいいといわれ調べてみたんですが
バージョン管理がどうとかいうソフトなのでしょうかこれは。
chasenを入れたいのですがこれをどう使えばPHPに導入できるのかわかりません。
すいませんがもう少しヒントもらえないでしょうか。
0213nobodyさん
2009/12/13(日) 11:25:10ID:???0214211
2009/12/13(日) 11:35:26ID:???$body= "foobar>>2,4,28,6hoge";
preg_match('/>((?:\d|\x82[\x4f-\x58])+(?:,(?:\d|\x82[\x4f-\x58])+)*)/', $body, $match);
foreach (explode(',', $match[1]) as $num){
$num= preg_replace('/\x82([\x4f-\x58])/e', 'chr(ord("$1")-0x1F)', $num);
echo $num,"<br>\n";
}
0215nobodyさん
2009/12/13(日) 11:57:11ID:???0216211
2009/12/13(日) 12:31:34ID:???「新潟」にもマッチするぞ。utf-8ならu修飾子付けることをお奨めする。
おれの知識はこの程度だ。
0217nobodyさん
2009/12/13(日) 12:34:51ID:???0218nobodyさん
2009/12/13(日) 12:56:34ID:???しました。
ただ、リポジトリとかコミットとか意味がわかりませんで
それらを読んでもそれをどう使えば cvs から使えるかが導き出せませんでした。
0219nobodyさん
2009/12/13(日) 13:04:25ID:???ttp://www.google.co.jp/search?q=viewvc&lr=lang_ja&ie=utf-8&oe=utf-8
0220nobodyさん
2009/12/13(日) 13:14:42ID:???0221196
2009/12/13(日) 13:19:08ID:iFkYaR3P>>196の正規表現だと、最初と最後にしかマッチしないというのが問題なんです。
>>2,4
は2と4が抜き出せますが、
>>2,4,6
は2と6で、
>>2,4,6,8
は2と8しか抜き出せません。
どのように修正すればいいでしょうか?
0222nobodyさん
2009/12/13(日) 13:25:03ID:???0225196
2009/12/13(日) 17:31:01ID:iFkYaR3Pバリデーションに使用するだけなので、レスの置き換えは想定していません。
0226nobodyさん
2009/12/13(日) 17:47:20ID:???0227196
2009/12/13(日) 18:06:05ID:iFkYaR3Pだめです。
<?php
preg_match('/(\d+)(,|-|\d+){1,}/', '2,6,18,11', $match);
print_r($match);
Array ( [0] => 2,6,18,11 [1] => 2 [2] => 11 )
0228nobodyさん
2009/12/13(日) 18:17:04ID:???0229nobodyさん
2009/12/13(日) 18:20:12ID:???君も頑固だねpreg_matchじゃダメっていってるのに
preg_match_all('/(>*?-?\d+)/', '2,6,18,11', $match);
print_r($match);
0230nobodyさん
2009/12/13(日) 18:22:07ID:???移動してください。
正規表現道場
http://pc11.2ch.net/test/read.cgi/php/1168450843/
正規表現 Part6(@ム板)
http://pc12.2ch.net/test/read.cgi/tech/1241537764/
0231196
2009/12/13(日) 18:36:47ID:iFkYaR3Pできました。ありがとうございます。
ほかの方も、正解はありませんでしたがありがとうございました。
ただ、なぜだめなのかいまいちよくわかりません。
私は限界ですが、がんばればうまくいきそうな気がします。
0232196
2009/12/13(日) 18:41:44ID:iFkYaR3P試したら、,2>4みたいな変なものにもマッチしますね。
あくまでもバリデーションなので、
>>2,4などにはマッチしてほしいですが、不正なものははじきたいです。
0233nobodyさん
2009/12/13(日) 18:45:59ID:???preg_match_all('/>*?(\d*\-?\d+)/', '2>4,>>6-9,18,11', $match);
print_r($match);
0234196
2009/12/13(日) 19:07:59ID:iFkYaR3P改良し、限界と感じたのでお助けを請うているのです。
バリデーションの意味を勘違いされていると思いますが、2>4は弾くべきなのです。
私が求めているものは、>>2,3,4などのあくまでベーシックなレスのみで、ほかには必要ありません。
0235nobodyさん
2009/12/13(日) 19:30:27ID:???改良されちゃいましたか
もうあなたはこのスレのレベルを超えているように感じられます
申し訳ございませんが、他を当たって頂けますでしょうか?
こちらもよりご満足頂ける回答ができるよう日々精進して参りたいと思っております
0236nobodyさん
2009/12/13(日) 19:50:24ID:???レスにマッチするものとか書いてるくせに
preg_match(/(\d+)(?:,(\d+))$/, $body, $match)
のどこがするのか聞きたい
何で>が入ってないの?適当に書いとけば誰かがやってくれるとおもってるんでしょ
0237nobodyさん
2009/12/13(日) 19:54:50ID:???0240196
2009/12/13(日) 20:21:24ID:iFkYaR3P>適当に書いとけば誰かがやってくれるとおもってるんでしょ
私が真剣にやったものを適当と判断されるのは勝手ですが、
誰かの助けを借りるスレではないんですか?
ちょっと修正しましたが、やっぱり1と2しか出てきません。
preg_match('/(\d+)(?:,(\d+))+/', '>>1,3,10,2', $match);
0241nobodyさん
2009/12/13(日) 20:25:41ID:???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問題はすでに解決しているのではないでしょうか?
なので、何か設定の問題なのかと思い質問させてもらいました。
■ このスレッドは過去ログ倉庫に格納されています