【PHP】下らねぇ質問はID出して書き込みやがれ 112
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2011/10/31(月) 05:11:09.81ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 111
http://hibari.2ch.net/test/read.cgi/php/1317232566/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0146nobodyさん
2011/11/06(日) 13:39:06.14ID:???丸投げスレではないので作る能力がない人はお帰りください
0149140
2011/11/06(日) 14:04:46.56ID:yw0oOdZMググれじゃなくて、その方法を詳細に教えてください><
教えてくれるまでこのスレに居座ります><
0150nobodyさん
2011/11/06(日) 14:18:30.43ID:???http://php.net/manual/ja/book.dom.php
0152nobodyさん
2011/11/06(日) 14:49:19.91ID:???質問者はそういうのも考えないと答えてくれる人を減らすばかりだぞ。
0153140
2011/11/06(日) 14:50:18.42ID:yw0oOdZM>>141と同じリンクじゃないですか><
せめてそのページのどこに解説が載ってるのか教えてください!
>>151
分かりません><
0154151
2011/11/06(日) 14:54:35.38ID:???分りました
まずこれ見てください
http://goo.gl/3uGjU
0155nobodyさん
2011/11/06(日) 14:54:59.53ID:???0156140
2011/11/06(日) 15:14:44.61ID:yw0oOdZM死ね!
0157nobodyさん
2011/11/06(日) 16:13:07.86ID:???そんなに自分でやるように促しても、もったいないよ。
<html>
<head>
<style type="text/css">
#d {display: none;}
</style>
</head>
<body>
<?php include("./hoge.php");?>
</body>
</head>
0158nobodyさん
2011/11/06(日) 16:50:54.65ID:???0160nobodyさん
2011/11/06(日) 20:43:01.49ID:???これは久々にすごいのがきたなwww
丸投げを丸投げではないと仰る
0161nobodyさん
2011/11/06(日) 20:59:02.31ID:???0162nobodyさん
2011/11/06(日) 21:11:09.35ID:???じゃあ、これでいいか?
$text = file_get_contents("hoge.php");
preg_match("|<div[^>]*id=\"b\"[^>]*>(.*?)</div>|su",$text,$matches);
print $matches[0];
0163nobodyさん
2011/11/06(日) 22:17:23.59ID:???0164nobodyさん
2011/11/07(月) 01:03:58.74ID:???ガキか
0165nobodyさん
2011/11/07(月) 01:08:17.64ID:???それの例文見つつ組み立てられるやつじゃないと
このスレは難しい
初心者が自分のスキル以上の成果物を求めるのは
勉強してこいと門前払いされて当然
0166nobodyさん
2011/11/07(月) 01:12:18.40ID:???0167nobodyさん
2011/11/07(月) 08:44:04.60ID:1lB9fRg6root権限以外で実行すると
Lost connection to MySQL server during query
みたいな変なエラーがでます
どんな原因が考えられますか?
0168nobodyさん
2011/11/07(月) 08:51:59.43ID:???そのエラーで検索すればいくつか原因がありそうだから、
1個1個確認してくしか。
せめて、検索してXXと○○試したけどダメでした、他の原因知ってる方いませんか、でしょ。
0169nobodyさん
2011/11/07(月) 08:54:34.52ID:???0170nobodyさん
2011/11/07(月) 12:06:17.73ID:???0171140
2011/11/07(月) 14:00:16.85ID:hVnG4+j00173nobodyさん
2011/11/07(月) 14:29:59.52ID:???0174140
2011/11/07(月) 14:33:51.26ID:hVnG4+j0意地悪しないでお願いします><
0176nobodyさん
2011/11/07(月) 14:40:17.49ID:???何個か書いてもらった、>>157 とか >>162 とか試した?
質問するなら、それじゃだめだったってことだろ?
試してからどこがダメだったか書かないと、誰も教えてくれねぇよ
試してないとしたら、せっかく書いてくれたのにやらない奴は最低だ
0178nobodyさん
2011/11/07(月) 14:50:59.65ID:???0179nobodyさん
2011/11/07(月) 14:55:24.82ID:???0180nobodyさん
2011/11/07(月) 14:55:26.68ID:???表示だけならそれでも問題ないはずだぞ。
ぶっちゃけ、その方がサーバー負荷は軽減する。
レスポンスタイムはPHPでやろうがCSSでやろうが一緒。
だから、CSSでやる場合のダメな点を挙げてから質問しなって。
0181nobodyさん
2011/11/07(月) 14:59:41.08ID:???0182140
2011/11/07(月) 15:00:07.62ID:hVnG4+j0試す価値もないということが分らんのか負け犬めが
0184nobodyさん
2011/11/07(月) 15:04:23.38ID:???0185nobodyさん
2011/11/07(月) 15:17:26.67ID:skZKPuIx同じドメインでUAを見て、モバイル(スマホ)サイトとPCサイトを出し分けてます。
PC版サイト内にiframeでモバイルサイトを表示したいんですが、
URL固定にして、いい方法ないでしょうか・・・
iframeだけUA偽装とかは無理ですかね?
URLに引数つけてUAの判断が妥当でしょうか?
よろしくお願いします。
0186140
2011/11/07(月) 15:17:27.68ID:hVnG4+j00190nobodyさん
2011/11/07(月) 15:28:08.43ID:???なんでまたがる前にトリップつけるとかやんなかったの?と、成りすましに言ってもしょうがないが。
0191nobodyさん
2011/11/07(月) 15:28:38.90ID:???0192nobodyさん
2011/11/07(月) 15:31:43.54ID:skZKPuIxすいません。説明不足でした・・・
同じURLでPC/MobileをPHPで出しわけしてるんで
コレが実現できるいい方法がないかなと。。。
.htaccessだとUAがPCだと判断されてしまいます。
http://example.com/ にアクセスすると
<html>
<body>
<div>hoge</div>
<iframe src="http://example.com" />
<!-- このiframe内がモバイルサイト -->
</body>
</html>
0193nobodyさん
2011/11/07(月) 15:32:57.81ID:???やっぱ、iframeのurlに引数を一つ追加して、それをモバイルのフラグに割り当てるべきだとおもう
擬似的なiframeを使うって手段も思い付いたが、
ページ遷移への対応を考えると絶望的に手間がかかるっぽいし。
0194nobodyさん
2011/11/07(月) 15:37:02.16ID:???もうむり?
0195nobodyさん
2011/11/07(月) 15:38:10.27ID:ViAJy6jaexec("/usr/bin/php /var/test.php {$params} ", $o, $r);
echo "レスポンス:".var_dump($r);
echo "出力:".var_dump($o);
のようにしてる時
引数$paramsには配列やserialize()した配列を指定できないんでしょうか?
引数$paramsが $params = array("dog", "cat");
test.phpが以下の内容の時、
<?php echo $argv[1][0]; ?>
1)配列を引数にした場合
なぜかAが出力されます
レスポンス:int(0)
出力:array(1) { [0]=> string(1) "A" }
2)serialize()した配列を引数にした場合
レスポンス:int(2)
出力:array(0) {}
配列はそのままでもserialize()してもダメなんでしょうか?
また、1)のケースのときの、返り値Aはどこから来たんでしょうか?
配列を渡す方法があったら教えてもらえると助かります、よろしくお願いします
0196nobodyさん
2011/11/07(月) 15:41:18.73ID:skZKPuIxやっぱそうですかねw
output_add_rewrite_varで値を引き継げるようにすればいいか。
どもっす!
>>194
Mobile/SmartPhoneに特化してるんで、
PC版には、使い方やら広告やら載せようかってしてたんですが、
どうせだったら、Mobile版見れるようにのっけちゃえって判断になりましたw
0197nobodyさん
2011/11/07(月) 15:46:06.61ID:???配列を文字列化した結果の先頭一文字がAだから。
シリアライズしたならデシリアライズすること。
あとはコマンドラインについて勉強しなされ。
0198nobodyさん
2011/11/07(月) 15:48:42.82ID:???seializeしたのをつけたコマンドを一度echoして、それをコマンドラインで打って試した?
なんか記号がいろいろ邪魔してそうだけど
0199nobodyさん
2011/11/07(月) 16:08:26.98ID:???テーブルのカラムが30を越えるような感じになっていて、
新規作成するときのsqlもインサートのチェックもかなり長くてややこしいことになってしまうので、
テーブルの作成やデータチェックが分かりやすく書ける
そんなライブラリってないでしょうか?
0200nobodyさん
2011/11/07(月) 17:11:06.60ID:???SQLite 9
http://hibari.2ch.net/test/read.cgi/db/1298737360/
ここで聞いたほうがいいかもだけど、若干荒れ気味w
0201nobodyさん
2011/11/07(月) 17:40:27.00ID:???ってか、あっちに書くくらいなら知恵袋の方がまだいい答え貰えそうなw
0203nobodyさん
2011/11/07(月) 17:53:48.42ID:???入力フォームのチェックがややこしいならsqlite関係ないし、そうじゃないならなんのチェックするのか分からないし
0205nobodyさん
2011/11/07(月) 18:02:20.53ID:pflxypT1imgタグを許可したいのですが
$text = preg_replace("/<img ([a-zA-Z0-9;\-\s]+)>/","<img $1>",$text);
これで置換できないのはなぜでしょうか?
0206nobodyさん
2011/11/07(月) 18:03:33.50ID:pflxypT1imgタグを許可したいのですが
$text = preg_replace("/&lt;img ([a-zA-Z0-9;\-\s]+)&gt;/","<img $1>",$text);
これで置換できないのはなぜでしょうか?
0207nobodyさん
2011/11/07(月) 18:05:11.09ID:???0208nobodyさん
2011/11/07(月) 18:12:33.28ID:pflxypT1ありがとうございます
しかしながら
$text = preg_replace("/&lt;img ([a-zA-Z0-9:;\/\"\'\-\s]+)&gt;/","<img $1>",$text);
これでもダメでした
こういうときって()の中はどう書けばいいのかな
0210nobodyさん
2011/11/07(月) 18:22:15.38ID:???どうせならそれにあわせて、自動的にcreate tableをやってくれるものとかないかなと。
0211195
2011/11/07(月) 18:23:46.55ID:ViAJy6jaありがとうございます
言われた通り、コマンドラインから似たような配列で試してみたら以下になりました(上手く行ってます)
[root@localhost ~]# ary=("dog" "cat")
[root@localhost ~]# php -q /var/test.php ${ary}
string(3) "dog"
(↑ test.phpのecho var_dump($argv[1])の結果です)
同様に.php中のexec()で配列の引数を渡す時点で配列は
ary=("dog" "cat")の形にしなきゃダメなんでしょうか
ためしに
$params= '$("dog" "cat")';
exec("/usr/bin/php /var/test.php {$params}", $o, $r);
としてみましたが出力として何も表示されません
0213nobodyさん
2011/11/07(月) 18:39:24.63ID:???$text = preg_replace("/<img .+?>", "<img $1>", $text);
要素の中に>と<は絶対にこないはずなのでこれでいい
0215nobodyさん
2011/11/07(月) 18:43:43.10ID:???いやいやいや、PHPは文字列送るだけなんで配列なんてモンはコマンドラインに送れないっすよ。
"/usr/bin/php /var/test.php {$params}" はただの文字列で
{$params}は、 "Array" って変換されるだけの文字列なので、
"/usr/bin/php /var/test.php Array" なわけで・・・ ってだれか上で書いてたでしょう?
そこの部分を join使うなりしてスペースで区切った文字列にでもするしかないのでは。
0216199
2011/11/07(月) 18:45:51.49ID:???dbのテーブル作成、入力値チェック、取得
このようなことをできるだけ短いソースで記述できるライブラリはないでしょうか?
半コピヘなソースを大量に書くの大嫌い
0218195
2011/11/07(月) 18:52:12.08ID:ViAJy6jaあー、やっぱり文字列か数値しか引数に持てないんですか…
phpマニュアルのexec()の説明にそう書いてて欲しいよ
配列をシリアライズして引数にしたときにresponseに2が返ってきたのも
引数に使えない文字が出てきてたからかな
はぁー、どっと疲れる結果だ…
ありがとうございました
0219195
2011/11/07(月) 18:54:14.64ID:ViAJy6ja218を書いた直後にいま思いついたんですが
serializeしたものにaddslashes()したら渡せるでしょうか?
試してみます
0222215
2011/11/07(月) 19:01:32.88ID:???シリアライズしたパラメータをひとつ渡せってことね。
>>219
シェルに渡す文字列のパラメータの部分を 配列をシリアライズした文字列にして、 escapeshellarg通せばいいかと。
受け側のPHPで 元にもどすんだよ。
0223nobodyさん
2011/11/07(月) 19:23:11.80ID:pflxypT1ありがとうございます
しかしながら&がうまくいきません
$text = "&";
$text = preg_replace("/([a-zA-Z0-9:;.=\&\"\'\/\-\s]+)>/","hoge",$text);
echo $text;
出力結果:& ←なぜhogeにならない?
0224nobodyさん
2011/11/07(月) 19:26:27.71ID:pflxypT1変な>が入ってました
しかしこれでいいのかなぁ
0225nobodyさん
2011/11/07(月) 19:26:39.80ID:ciMO8Qf+$b = '/a/b/t/f/';
という二つのパスがあり、$bのパスを基準に$aへの相対パスを求める方法を教えてください
この組み合わせ例なら結果としては../../c/dを得たいのです
0228215
2011/11/07(月) 19:50:03.36ID:NMeIBL32後ろにいらない > がついてる
0229nobodyさん
2011/11/07(月) 20:17:49.33ID:???どっと疲れたのはあなたのやり方が拙いためなので、ここで言われても。
何を実行しようとしているのか確かめればいい。ちなみに、execで使用されるシェルおよび環境変数についても調べておいたほうがいいよ。
0230215
2011/11/07(月) 20:39:58.70ID:NMeIBL32$a = '/a/b/c/d/';
$b = '/a/b/t/f/';
print getrPath($b,$a);
function getrPath( $base , $target) {
$base = explode("/",$base);
$target = explode("/",$target);
$ret = array();
for($i=0;$i<count($base)-1;$i++)
if($base[$i]!=$target[$i])$ret[]="..";
for($i=count($base)-1-count($ret);$i<count($target);$i++)
$ret[]=$target[$i];
return implode("/",$ret);
}
行稼ぎで気持ち悪いのは勘弁な。
0232nobodyさん
2011/11/07(月) 20:58:54.70ID:???配列をimplode(" " , $hoge); ってして、スペース区切りでtest.php に渡したら?
test.php内で、foreach( $argv as $hoge )ってしたら、解決じゃね?w
0233nobodyさん
2011/11/07(月) 21:00:38.53ID:???空白はいるなら、””で囲むやらaddslashesやらしないとね
0234nobodyさん
2011/11/07(月) 21:23:15.59ID:???おもいつきで作るもんじゃねーな。訂正。
function getrPath( $base , $target) {
$base = explode("/",$base);
$target = explode("/",$target);
$ret = array();
$flg=false;
for($i=0;$i<count($base)-1;$i++)
if($base[$i]!=$target[$i]||$flg){$ret[]="..";$flg=true;}
for($i=count($base)-1-count($ret);$i<count($target);$i++)
$ret[]=$target[$i];
return implode("/",$ret);
}
0236nobodyさん
2011/11/07(月) 21:50:10.70ID:kLp4+73LPHP5.3.8にてDOMDocumentにてHTMLファイルを取得し、<body>内のテキストだけを抽出したいです。
タグ部は正規表現で除去出来ますが、問題になるのは<script>でJavaScriptの中身が表示される、<!--などのコメントが表示される事です。
で、<script>とコメントを含む部分を先に除去したいと思います。
/<script[^>]*?>.*?</script>/si
とかやってみたのですが良く分かりません。
アドバイスまたは似たような事を書かれているサイトなどを教えて頂けないでしょうか?
すると、正規表現使わずに出きるので、PHPスレにて聞けといわれました
どのようにすればいいのでしょうか?
0239nobodyさん
2011/11/07(月) 22:02:24.67ID:???ん? http://jp.php.net/manual/ja/book.dom.php の
一番上のコメントのやり方でも、無理ってこと?
ちょうどbodyって例だw
0240nobodyさん
2011/11/07(月) 22:20:23.00ID:???$doc->loadHtmlFile("hoge.php");
$element = $doc->getElementsByTagName("script");
$element->item(0)->parentNode->removeChild($element->item(0));
print $doc->saveHtml();
除去ならこっちじゃねーの?
0241nobodyさん
2011/11/07(月) 22:44:18.22ID:???$doc = new DOMDocument();
$doc->loadHTML(file_get_contents('http://www.nicovideo.jp/'));
$xpathObj = new DOMXPath($doc);
$textNodes = $xpathObj->evaluate('//body//*[name(.)!="script"][normalize-space(child::text()) != ""]/text()');
foreach ($textNodes as $key => $textNode) {
var_dump($textNode->wholeText);
}
0242nobodyさん
2011/11/07(月) 22:48:31.16ID:???C++の場合は、メソッドをstaticにするとプログラムがメモリに乗るから早くなるって聞いたことがあるんですが、
phpの場合はどうなんでしょうか?
みなさんは、phpでメソッドをstaticにする、しないをどのようにきりわけているでしょうか?
0243nobodyさん
2011/11/07(月) 23:01:03.48ID:???>>241
>除去っていうよりスクリプトタグ省いたTextが欲しいって事じゃないの?
そうです
テキスト部のみが欲しいのですが、
pre_replace()とかでタグとかを除去するための正規表現を考えていました
>>242
メモリはどうか分かりませんが、確かPHPもstaticの方が早いはずですよ
いい加減な事は言えませんが、オライリー本か何かに書いてましたよ
インスタンスを作成しないぶんとかなんとか
自分は意識してstaticで出来ることはstaticにしています
0244nobodyさん
2011/11/08(火) 00:16:56.83ID:???じゃあもうちょっと気持ち悪いのを。
function getrPath( $base , $target) {
$base = explode("/", $base);
$target = explode("/", $target);
while (($b = array_shift($base)) === ($t = array_shift($target)) && !is_null($b));
return implode("/", array_merge(array_fill(0, count($base), '..'), array($t), $target));
}
0245nobodyさん
2011/11/08(火) 00:18:23.69ID:???staticにするという事はメモリを使うということだ
staticを唱えた数だけメモリを使うことを頭に入れて使えばいいんだよ
staticをつけないといけないほど速度を気にしないといけないことってそうそうない
オープンソースでもstaticなんてメジャーどころはみない
■ このスレッドは過去ログ倉庫に格納されています