【PHP】下らねぇ質問はID出して書き込みやがれ 97
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2010/07/23(金) 06:24:51ID:3G71fl8i過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
前
【PHP】下らねぇ質問はID出して書き込みやがれ 96
http://pc11.2ch.net/test/read.cgi/php/1275032024/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0478nobodyさん
2010/08/30(月) 14:51:25ID:yNaLEgznあ、やってしまったぽいorz
>>477
http:// から始まるURLにはマッチするけど
www.google.com
photo.google.com
こういうURLには、マッチしないよね・・・orz
0479nobodyさん
2010/08/30(月) 14:59:24ID:???0481nobodyさん
2010/08/30(月) 15:37:40ID:yNaLEgznhttp://<a href="www.google.co.jp" rel="nofollow">www.google.co.jp</a>
<a href="www.google.com" rel="nofollow">www.google.com</a>
hoge@<a href="hogehoge.com" rel="nofollow">hogehoge.com</a>
メールも置換するの?
俺の技術だと無理だわorz
0482nobodyさん
2010/08/30(月) 15:48:50ID:???0483nobodyさん
2010/08/30(月) 17:50:00ID:VlaMGgSYfunction 関数名(ここって何??) {
実装したい処理
}
?>
() の中っていまいちわからないのですが
$abc って書けば、$abcの値のデータ以外は処理しないってことでしょうか?
独学でPHP学んでたら早速躓きましたorz
0484nobodyさん
2010/08/30(月) 17:59:41ID:???0485nobodyさん
2010/08/30(月) 18:05:32ID:???そのfunctionに渡したい値(引数)
この程度で質問にくるようだとキリがないよ
何か本買った方がいいんじゃない?
0486nobodyさん
2010/08/30(月) 18:13:57ID:???http://jp.php.net/manual/ja/index.php
0487nobodyさん
2010/08/30(月) 18:56:15ID:H9RFX+D7結果によってメッセージ等を表示させたり処理を分岐したいのですが・・・。
0488nobodyさん
2010/08/30(月) 18:59:28ID:???0489nobodyさん
2010/08/30(月) 19:13:35ID:???DBの接続は何を使ってる?
PDOならこんな感じ
try{
// クエリを発行
} catch (PDOException $e){
// エラー処理
}
0490nobodyさん
2010/08/31(火) 00:42:22ID:???JavaScriptみたいにブロックがスコープ持たないんですよね?
0491nobodyさん
2010/08/31(火) 06:30:13ID:???{
$extensions = 'com|org|net|gov|edu|mil|us|info|biz|ws|name|mobi|cc|tv|jp';
$patterns = array(
'#([\s{}\(\)\[\]])(([a-z]+?)://([a-z_0-9\-]+\.([^\s{}\(\)\[\]]+[^\s,\.\;{}\(\)\[\]])))#ie',
"#([\s{}\(\)\[\]])([a-z0-9\-\.]+[a-z0-9\-])\.($extensions)((?:/[^\s{}\(\)\[\]]*[^\.,\s{}\(\)\[\]]?)?)#ie"
);
$replacements = array(
"'$1<a href=\"$2\" title=\"$2\">' . 'Link' . '</a>'",
"'$1<a href=\"http://$2.$3$4\" title=\"http://$2.$3$4\">' . 'Link' . '</a>'"
$text = preg_replace($patterns, $replacements, $text); <------ この行でエラー出る。何かおかしいですか?
return($text);
}
0492nobodyさん
2010/08/31(火) 07:33:13ID:???の閉じカッコ
0493nobodyさん
2010/08/31(火) 08:16:28ID:???((https?|ftp)\:\/\/)?([\w-]+\.)+([\w-]+)(\:[\d]+)?([\w\.\*\/\:%,!#~@&=-]+)?
これでURLはマッチすると思う
0494nobodyさん
2010/08/31(火) 08:49:22ID:???PDOだとsetAttributeで設定するPDO::ATTR_ERRMODE属性の値で
エラー時の動作が違うよ。詳しくはマニュアル嫁
0495nobodyさん
2010/08/31(火) 10:08:13ID:mnh9hvQe自前で作ったクラスを、配列であるかのように扱いたいのですが、ちょっと困っています。
ArrayAccess インターフェイスなどを使って、とりあえず一通り実装してみたのですが
array_mergeのような「配列操作関数」に渡すと、お前配列じゃないよねと関数が失敗してしまいます。
私の実装の仕方がまずいのかなと思い、標準のArrayObjectでも試してみたのですが、
array_mergeはArrayObjectも受け付けてくれませんでした
配列操作関数もうけつけてくれる、配列であるかのようなクラスを作るにはどうしたらよいでしょうか?
0496nobodyさん
2010/08/31(火) 10:48:36ID:???0497nobodyさん
2010/08/31(火) 10:50:56ID:???質問の書き方から、初心者と察したので
そういうのまで書くと余計に混乱すると思ったんだが
言葉足らずだったか、補足thx
0498nobodyさん
2010/08/31(火) 12:03:21ID:???0499487
2010/08/31(火) 12:18:33ID:nqVyEYkyありがとう。何となくわかりました。
今は私もPDOを使ってます。
>>498
今ってPDOが人気なんでしょうか?
プレースホルダの動作にセキュリティの問題があるとかで、非推奨、
なんて話を聞いたので、どうしたものかと思ってました。
0500nobodyさん
2010/08/31(火) 12:33:06ID:???0501nobodyさん
2010/08/31(火) 14:49:30ID:naNUn36rを表示したいんだけど、
<?php
require("123.cgi?home=1");
?>
で呼び出せません。
includeでもだめでした。
どうすれば呼び出せますでしょうか?
誰か教えてください。
よろしくおねがいします。
0502nobodyさん
2010/08/31(火) 14:57:15ID:???亀で申し訳ないんだけど一応報告。
ここの内容に該当してました。
ttp://www.phppro.jp/qa/1577
0503nobodyさん
2010/08/31(火) 14:57:40ID:???0506nobodyさん
2010/09/01(水) 06:43:43ID:o7qUnh2A【PHPのバージョン】5.3.3
【連携ソフトウェア】MySQL
【質問内容】
Warning: phpinfo() [function.phpinfo]: It is not safe to rely on the system's timezone settings.
You are *required* to use the date.timezone setting or the date_default_timezone_set() function.
In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier.
We selected 'Asia/Tokyo' for 'JST/9.0/no DST' instead in /var/www/html/phpinfo.php on line 9
date関数を使うとこのエラーが出るのでphp.iniに
date.timezone = Asia/Tokyo
と設定しましたがエラーが消えません(コメントアウトは外しました)。
phpファイルに
date_default_timezone_set('Asia/Tokyo');
を記述すると消えます。
試したこと
date.timezone = "Asia/Tokyo" とダブルコーテーションで囲ってみたけどダメだった。
ini_get('date.timezone') をechoしてみたが何も表示されなかった。
php.iniのファイルパスは確認しています。
php.ini修正後にapacheは再起動しています。
どなたかお願いします><;
0508nobodyさん
2010/09/01(水) 10:34:04ID:???0509nobodyさん
2010/09/01(水) 13:54:56ID:???0510anybody
2010/09/01(水) 14:19:00ID:???phpソースを探してます。ライブラリー、コードのアドバイスいただけますか。
0511nobodyさん
2010/09/01(水) 15:10:34ID:???0513nobodyさん
2010/09/01(水) 15:25:18ID:???0514anybody
2010/09/01(水) 15:28:25ID:???すいません、何となくわかりそうで分からないです。何かヒントいただけますか。
0516nobodyさん
2010/09/01(水) 15:43:30ID:???正規表現は他の人にまかせるとして
HTMLソースはfile_get_contentsでとってこれる
PHP: file_get_contents - Manual
http://jp2.php.net/manual/ja/function.file-get-contents.php
0517anybody
2010/09/01(水) 15:56:22ID:???hタグの中身だけを表示するには、file_get_contentsで範囲指定するばいいのですか。
まだphp初めて間もないのですいません。
0518nobodyさん
2010/09/01(水) 16:18:58ID:???まず、file_get_contentsで指定したURLのHTMLソースを全部とってくる
次に、とってきたソースからh?タグを正規表現で抜き出す。
HTMLソースは>>516のマニュアルの
「例1 とあるウェブサイトのホームページのソースの取得と出力」
を試してみて
0519nobodyさん
2010/09/01(水) 16:34:07ID:???$subject = file_get_contents("http://www.yahoo.com/"); // >>516
$pattern = '/<h[12].*?>(.*?)<\/h[12]>/is';
preg_match_all($pattern, $subject, $matches); // http://jp.php.net/manual/ja/function.preg-match-all.php
var_dump($matches);
0520nobodyさん
2010/09/01(水) 16:40:58ID:???0521anybody
2010/09/01(水) 17:36:27ID:???>>518
>>519
アドバイスありがとうございます。 >>519のコード試したら出来ました。
これから自分でも書いてみてみようと思います。並び替えとか表示の仕方を書いてみようと思います。
アドバイスしてくれた方ありがとうございます。
0522nobodyさん
2010/09/01(水) 18:19:47ID:AryEx4i2#URL
$text = preg_replace("/(((http[s]?:\/\/)|(w\.))?(([a-z][-a-z0-9]+\.)?[a-z][-a-z0-9]+\.[a-z]+(\.[a-z]{2,2})?)\/?[a-z0-9._\/~#&=;%+?-]+[a-z0-9\/#=?]{1,1})/is", "<a href=\"$1\">$1</a>", $text);
$text = preg_replace("#(^|[\n ])([a-z0-9&\-_\.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)#i", "\\1<a href=\"mailto:\\2@\\3\">\\2@\\3</a>", $text);
$text = substr($text, 1);
return($text);
で、なんとかマッチするようになりましたが、問題が出てきました
http://www.google.co.jp/ ⇒ <a href="http://www.google.co.jp/">http://www.google.co.jp/</a>
www.google.co.jp ⇒ <a href="www.google.com">www.google.com</a>
hoge@'hogehoge.com ⇒ <a href="mailto:hoge@'hogehoge.com">hoge@<a href="hogehoge.com">hogehoge.com</a></a>
こんな感じになってしまうのですが以下のようにしたいのです。
<a href="http://www.google.co.jp/">www.google.co.jp</a>
<a href="http://www.google.com">www.google.com</a>
<a href="mailto:hoge@'hogehoge.com">hoge@hogehoge.com</a>
力を貸してください。
0523nobodyさん
2010/09/01(水) 20:46:21ID:???0524nobodyさん
2010/09/02(木) 08:54:57ID:???0525nobodyさん
2010/09/02(木) 10:44:58ID:???クォートを除去してaタグにしたいってことだよね?
0526nobodyさん
2010/09/02(木) 11:47:25ID:DFmmGQxCいちいちechoとかprint文を書くのが面倒なのですが、
簡単にデバッグするにはどうしたらよいですか?
0527nobodyさん
2010/09/02(木) 11:48:07ID:BtsWFfEu>>524
どうすればいいですかね?
>>525
ttp://www.google.co.jp/ ⇒ <a href="ttp://www.google.co.jp/">ttp://www.google.co.jp/</a>
www.google.co.jp ⇒ <a href="www.google.com">www.google.com</a>
hoge@'hogehoge.com ⇒ <a href="mailto:hoge@hogehoge.com">hoge@<a href="hogehoge.com">hogehoge.com</a></a>
こんな感じになってしまうのですが以下のようにしたいのです。
<a href="ttp://www.google.co.jp/">www.google.co.jp</a>
<a href="ttp://www.google.com">www.google.com</a>
<a href="mailto:hoge@hogehoge.com">hoge@hogehoge.com</a>
の間違いです。
0528nobodyさん
2010/09/02(木) 13:36:28ID:???$pattern = "/((^|[\n ])([a-z0-9&\-_\.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+))|(((http[s]?:\/\/)|(w\.))?(([a-z][-a-z0-9]+\.)?[a-z][-a-z0-9]+\.[a-z]+(\.[a-z]{2,2})?)\/?[a-z0-9._\/~#&=;%+?-]+[a-z0-9\/#=?]{1,1})/i";
$match = null;
$res = preg_match_all($pattern, $text, $match);
var_dump(array($res,$match));
正規表現は書いてあるのをほぼそのまま使ったからもっと短くはできるはず
あとはmatchを見ながらてきとうにしろ
もしくは
function replacement($match){
ここで$matchを見ながら変換
return 変換後の文字列;
}
$res = preg_replace_callback($pattern, 'replacement', $text);
こんな感じでやるかだな
0529nobodyさん
2010/09/03(金) 02:11:51ID:NkeDLnjNfunction d() {
echo '<pre style="text-align:left;background:#fff;color:#333;border:1px solid #ccc;margin:2px;padding:4px;font-family:monospace;font-size:12px">';
foreach (func_get_args() as $v) var_dump($v);
echo '</pre>';
}
0530nobodyさん
2010/09/03(金) 12:26:39ID:uUm5hE++php5.3.xだとエラーになる。
これどうしたらいいのか教えて下さい。
全部<?php echo $hoge;?>に変換するのかな・・・?
あと<?=$hoge?>←この書き方って名前なんていうか知ってたら教えて欲しい
よろしくお願いします
0531nobodyさん
2010/09/03(金) 12:34:53ID:???0532nobodyさん
2010/09/03(金) 12:35:25ID:???まぁ普通に変えたほうが良いと思うがな
http://jp.php.net/echo
0535nobodyさん
2010/09/04(土) 15:46:22ID:???このPCでphp5.3にアップデートする必要があるのですが、
どのように対応すればいいのか分かりません。
php以外にも色々アップデートする必要があり、今後も同じような要望が出そうなため
ちゃんと管理できるようなインストール方法を探しております。
具体的には、/usr/local/直下の、
binディレクトリやlibディレクトリなどにばらばらとファイルがインストールされているようです。
どこに何がインストールされたのかを見定めて取り除くのは困難です。
一般的にはどのように管理してバージョンアップするのでしょうか。
自分で考えたのは、
/usr/local/php/のようなディレクトリを作り、その下にさらに
/usr/local/php/php5.0
/usr/local/php/php5.3
のようにディレクトリを作って別々にインストールするというやり方です。
そうすれば、この後php5.4が出てインストールする必要があっても、
/usr/local/php/php5.4に入れて、phpコマンドのシンボリックリンクを修正すれば対応できそうです。
この方法は問題ありますでしょうか?
0536535
2010/09/04(土) 15:46:55ID:nNHV9LL20537nobodyさん
2010/09/04(土) 16:43:53ID:???0538535
2010/09/04(土) 17:03:51ID:nNHV9LL2ありがとうございます。
php5.0を削除せずに、make installして上書きしてしまう
ということでしょうか?
0539nobodyさん
2010/09/04(土) 17:12:55ID:???0541nobodyさん
2010/09/04(土) 22:52:48ID:a77duTj2【PHPのバージョン】5.2.14
【連携ソフトウェア】PostgreSQL 8.4
【質問内容】
php.iniでphp_pgsql.dllを読み込むように設定しても
phpinfo.phpにpgsqlの項目が出てきません、
php_pgsql.dllはバグがあると聞いたので古いバージョンの物と差し替えましたがそれでも変わりません
pgsqlを利用するにはどのようにすればいいのでしょうか?
ちなみにlibpq.dllはちゃんとpathの通ったディレクトリに入れてあります。
0542535
2010/09/05(日) 01:11:06ID:xVoToBO/yumは使えれば使いたいのですが、
opensslを使えるようにとの要望がありまして
これがyumインストールだと無理らしいのです。
>>540
ありがとうございます。
このやり方でいくことにします。
何はともあれ実際にやってみるのも勉強な気がしてきました。
0543nobodyさん
2010/09/05(日) 01:37:25ID:???んなことねー
0544nobodyさん
2010/09/05(日) 03:48:13ID:???その日の気分で好きなバージョンをmake install
0545nobodyさん
2010/09/05(日) 06:01:18ID:imIw0HZwApache?HTTP?server?does?not?work?correctly,?check?whether?other?aplication?use?the?important?port?(80)?and?terminate?them.?moreover?check?firewall?setting?and?correctness?of?the?configuration?files
というエラーがでたんですが、どうしたらいいですか?
0546544
2010/09/05(日) 06:14:55ID:???skypeをきったら動作しました
0547nobodyさん
2010/09/05(日) 07:50:40ID:???これから追加される動画全てを漏らさずに取得するのってどうやるんですかね
10分毎にアクセスして取得すればいいのかな・・・
0548nobodyさん
2010/09/05(日) 07:55:37ID:???それ、PHPの質問じゃねぇじゃん。
使うのがRubyだろうがPythonだろうが、はたまたVBだろうが同じだろ。
ついでにスレタイよく読め。
0549nobodyさん
2010/09/05(日) 16:09:18ID:cNhoHi9Eするべきか悩んでおります。
コントローラーにはビジネスロジックを書かずに、モデルにどんどん書いています。
すると、今度はモデル内のコードがごちゃごちゃしてきました。
繰り返しをするコードは別個のファンクションにしていますが、単純に、モデル内における
ファンクション内のコード数が長くなりすぎた場合、どの程度で別のファンクションに分けるべきでしょうか?
0550nobodyさん
2010/09/05(日) 22:14:11ID:???0551nobodyさん
2010/09/05(日) 22:52:56ID:???0553nobodyさん
2010/09/06(月) 08:19:35ID:???とりあえず、URL(com/jpのみの対応)の正規表現についていろいろ試してみたのだが
(http(s|)\:\/\/|www\.)\S+\.(jp|com)(\/|)
だと、どう?
http://www.test.com/
www.test.com
www.test.com/
http://www.test.co.jp/
www.test.co.jp
www.test.co.jp/
には、マッチすることは確認した。アドバスお願いします。
0554nobodyさん
2010/09/06(月) 08:47:39ID:???(s|)をs?にするとかしてみたらどうですか。
0555nobodyさん
2010/09/06(月) 09:12:39ID:???jp や com でURL判定とは考えたね。
: や / の前って\必要だっけ?
ちょっと自信ねぇや。誰かフォロー頼む
私も正規表現なのですが、スペース又は全角の)、半角の]以外の全半角1文字以上の文字に
マッチする方法ってどうすればいいのでしょうか?
0556nobodyさん
2010/09/06(月) 09:56:00ID:???0557nobodyさん
2010/09/06(月) 10:03:28ID:???0558nobodyさん
2010/09/06(月) 10:23:53ID:???スラッシュはデリミタとかぶるからだろ
0559nobodyさん
2010/09/06(月) 13:02:10ID:UzPRiwoF^< じゃぁ、マッチしないんだけど同記述すればいいのでしょうか?
^\< でも同じでしたorz
0560nobodyさん
2010/09/06(月) 13:06:28ID:???で、URLをどこまで対応するかにもよるよね
ID,PASS,ポート番号をURLに含める事もできるし
そしてドメインなんて新しいのもでてくるしね
まぁあるかないか(s|)って書いてる所は上でも書かれてるけどs?で良い
0562nobodyさん
2010/09/06(月) 13:13:34ID:???0563nobodyさん
2010/09/06(月) 13:31:45ID:UzPRiwoFhttp://www.rider-n.sakura.ne.jp/regexp/regexp.php
ここで試してもなぜかマッチしてしまうorz
0565nobodyさん
2010/09/06(月) 14:29:47ID:???$hoge = ''<font color="red">'
この違いがいまいちわかりません。
エロイ人教えて
0566nobodyさん
2010/09/06(月) 14:31:47ID:???$hoge = '<font color="red">'
この違いがいまいちわかりません。
エロイ人教えて
修正しました。
0567nobodyさん
2010/09/06(月) 14:39:54ID:???上はダブルコーテーションで文字列を囲っているため
文字列内にダブルコーテーションがでてくると、
そこで文字列が終わりだと判断されるため、そうならないように\でエスケープしている
下はシングルコーテーションで文字列を囲っているため
文字列内にダブルコーテーションがでてきても、
そこで文字列が終わりだと判断されないため、エスケープする必要が無い
例では関係無いが、文字列内に変数を使う場合
ダブルコーテーションでは変数が展開され、
シングルコーテーションでは展開されないという違いもあるから注意
あと次からID
0568nobodyさん
2010/09/06(月) 15:04:38ID:6zgB2gTn最後に、$0 $1 $2 \0 \1 \2 とかあるけど
どういう意味なんでしょうか?
試しに出力させてみたが、いまいち共通点がわかりません。
0569nobodyさん
2010/09/06(月) 15:37:58ID:???0570nobodyさん
2010/09/06(月) 15:44:49ID:EUjFvh1N0571nobodyさん
2010/09/06(月) 16:37:28ID:h/N0GRG6abc を頭に付け足して abc012 にしたい場合
どうすればいいのでしょうか?
0572nobodyさん
2010/09/06(月) 17:32:19ID:???正規表現の後方参照
>>571
$res = ($test[0] == '0' || $test[0] == '1' || $test[0] == '2' ) ? $test : 'abc'.$test;
0573nobodyさん
2010/09/06(月) 17:51:38ID:AkaNDM+fエラーになった場合、ほとんどのケースで
'Invalid controller specified (error)'
のエラーメッセージしかでなくてどのが悪いのか
みつけるのにすごく時間がかかるのですが、
これが普通なのでしょうか?
0574nobodyさん
2010/09/06(月) 20:39:01ID:???$res = substr($test, 0, 3) === '012' ? $test : 'abc'.$test;
0575nobodyさん
2010/09/06(月) 21:48:54ID:???0576nobodyさん
2010/09/06(月) 23:54:22ID:EUjFvh1Nもし、○○であれば こういう処理。違ったらこういう処理みたいなやつ。
0577nobodyさん
2010/09/06(月) 23:59:10ID:???■ このスレッドは過去ログ倉庫に格納されています