トップページphp
1001コメント265KB

【PHP】下らねぇ質問はID出して書き込みやがれ 123

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2012/09/25(火) 23:39:55.21ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
PHP】下らねぇ質問はID出して書き込みやがれ 122
http://kohada.2ch.net/test/read.cgi/php/1344963135/

◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
0760nobodyさん2012/11/06(火) 21:40:01.61ID:???
>>759
こんな関数があるなんて知りませんでした
ありがとうございましたm(_ _)m
0761nobodyさん2012/11/07(水) 00:19:18.13ID:9XgeiKvF
phpが実行されるときは呼ばれてないけどfunction内も全てロードすると聞いたんですが
これはクラスも同じなんでしょうか?
速度的に改善したいのですが、includeされたファイル内にある
function

class
で読み込まれるタイミングの違いがあれば教えてください。
0762nobodyさん2012/11/07(水) 00:42:55.40ID:gzCebguY
お前らphp開発ってサーバに直結してやってる?
それともローカルで開発が終わってからサーバにアップ?

俺は前者でやってるw
0763nobodyさん2012/11/07(水) 00:48:58.40ID:???
>>761
ほんとに君のそれはそこがネックになっているのかね
0764nobodyさん2012/11/07(水) 00:53:15.80ID:???
ローカルで開発
0765nobodyさん2012/11/07(水) 02:30:47.68ID:???
>>758
無茶な!と言いたいけど、個人だとそういうの多いよね。
法人でもたまにあるけど。
07667612012/11/07(水) 09:40:56.26ID:tumxuWL0
>>763
functionの入ったphpをincludeすると呼んでないけど明らかに速度は落ちます
includeしなければ速度は上がります。
ですがfunctionが複雑に入り組んでいるのでバラすのも大変なので、ある程度を
分割してclassで読み込みが制御できるのであればと考えておりました。
0767nobodyさん2012/11/07(水) 09:42:49.09ID:???
参考までに何行くらいのコードの話をしてるのか教えていただけますか?
0768nobodyさん2012/11/07(水) 09:47:19.11ID:???
functionだけじゃなくて処理も入ってるんじゃないの
もしくはリモートに接続してるとか
07697612012/11/07(水) 10:40:44.58ID:tumxuWL0
>>767
ざっと見た限りですが1万5千行くらいあります

>>768
各処理を見てみましたが、基本的にすべてfunctionでラッピングされておりました
0770nobodyさん2012/11/07(水) 10:44:34.22ID:???
クラスのほうがおもいだろ。
ifなと使って使う時だけ限定的にインクルードしていけ。
0771nobodyさん2012/11/07(水) 10:48:54.38ID:???
1万5千行もあったら、C/C++でDLLなどバイナリのライブラリにしてしまえ。
そしたら読み込み時はPHPでチェックされない。
0772nobodyさん2012/11/07(水) 10:57:36.03ID:???
これ入れたらいい。



HipHop VM開発に至る経緯
Facebookでは、爆発的なユーザー数の増加に対応するため、アプリケーション実行速度の高速化が急務とされていた。
問題は、これまでに蓄積されてきた膨大な量のPHPコードベースだった。
そこでFacebookが選んだのは、アプリケーションのコードに手を加えるのではなく、PHPの実装そのものを改善する方法だった。

そのための試みとして、同社では2010年より「HipHop for PHP」で2種類のPHPの実装を進めてきた。
ひとつはPHPコードをC++コードに変換し、そこからバイナリコードを生成するHipHop compiler、もうひとつは独自のPHPインタプリタ実装であるhphpiだ。
ネイティブ実行が可能な前者の方が圧倒的にパフォーマンスは高いが、静的なコード解析しか行うことができない上に、コンパイルの待ち時間が必要なことからPHPの手軽さが犠牲になる。
Facebookでは社内のソフトウェア開発にはhphpiを使用し、外部向けの本番環境にはhphpcによって生成したバイナリコードを配備するという形で使い分けてきたという。
開発用と本番用で実行基盤が異なるというのも、テスト工程の増加など様々な面で問題をはらんでいることは想像に難くない。
そこで同社が次の一手として開発したのがhhvmというわけだ。

hhvmはJIT(Just-In-Time)コンパイラを搭載し、実行時に動的にバイナリコードを生成する。
これによってhphpcのようにPHPコードをC++に変換することなく、直接高速に実行することができるようになる。
サービスの開発から公開までの全域にわたって効率化を実現できることから、Facebook社内での注目度は高いという。

Facebook社内ではすでにhphpiに代わってhhvmが使われはじめており、将来的にはすべてのPHP実行環境をhhvmに置き換える計画だという。
hhvmは従来のHipHop for PHPと同様にオープンソースで開発されており、GitHubにリポジトリが公開されている。
PHPの言語仕様そのものは変更されていないので、既存のPHPコードでも実行環境を置き換えるだけで利用することができる。PHPを使ったアプリケーションの高速化を求める開発者にとっては注目すべき取り組みと言えるだろう。
http://builder.japan.zdnet.com/script/35012295/
0773nobodyさん2012/11/07(水) 14:25:56.37ID:2sStCN3A
配列ないの添え字を動的に設定したいです

たとえば

for($i=0;$i<10;$i++){
echo $test['test'.$i];
}

みたいにして、test1、test2、test3
っていうふうに変えたいんですが、上記の通りだとうまくいきません
どうすればいいでしょうか?
0774nobodyさん2012/11/07(水) 14:39:44.36ID:???
>>773
どううまくいかないのか?
うちじゃうまくいくけどね。
0775nobodyさん2012/11/07(水) 14:39:51.50ID:???
echoの前に、代入してください
0776nobodyさん2012/11/07(水) 16:45:41.79ID:???
エラーメッセージキボンヌ
0777nobodyさん2012/11/07(水) 16:47:02.77ID:2sStCN3A
>>769
わかりまりました
ありがとうござりました
0778nobodyさん2012/11/07(水) 17:27:37.44ID:HSMtZo+3
Google → Aページ → リダイレクトしてBページ

といった遷移がなされる場合に
BページでGoogleからの検索ワードが取得したい為
最初の(Googleでの)リファラが欲しいのですが
どのようにリダイレクトさせればいいでしょうか?
07797782012/11/07(水) 18:54:34.66ID:???
普通に↓でイケました。お騒がせしました。
header("Location: " . $url);
0780nobodyさん2012/11/07(水) 23:44:55.12ID:???
>>779
それ無視するブラウザあるからHTMLで吐き出したほうがいいかも
07817782012/11/08(木) 00:37:31.26ID:???
>>780
HTMLで吐き出した方がいいというのはどういう意味でしょうか?
0782nobodyさん2012/11/08(木) 12:56:19.26ID:???
setcookie関数でクッキーを作成すると、どこに作成されますか?

ブラウザはwindowsのIEです。

C:\Documents and Settings\ユーザ\Cookies
だと思ったんですが見当たりません。
$_COOKIE関数でセットした値を取得できるので、セット自体はされているのですが。


宜しくお願いします
0783nobodyさん2012/11/08(木) 13:07:23.32ID:???
>>782
すいません、自己解決できました。
setcookie関数の構文記述に誤りがあり、クライアント側に作成されていませんでした。

場所はC:\Documents and Settings\ユーザ\Cookiesでした。
0784nobodyさん2012/11/08(木) 18:36:46.59ID:???
>>782-783 >>1
0785nobodyさん2012/11/08(木) 23:34:29.59ID:f/f3pzKJ
(mb_系でない)文字列関数は、マルチバイト文字の後続バイトにマッチしてしまうのがいけないのであり、
先行バイトと後続バイトがはっきり区別できるUTF-8では問題ない、という解釈は合っているでしょうか。
置換がpreg_replaceやmb_ereg_replaceではなくstr_replaceで済むのならその方が楽ですし、
正規表現ではなくただの置換の方が内部の処理量も少なくて済むような気がするのですが。
0786nobodyさん2012/11/09(金) 05:17:11.99ID:???
はっきり区別できる根拠は?
0787nobodyさん2012/11/09(金) 05:19:04.13ID:???
>>778
検索エンジンを騙して無駄な検索結果を増やす行為
07887852012/11/09(金) 08:26:28.79ID:fHegqpBv
>>786
ビット列10で始まるバイトが後続バイト、それ以外が先頭バイトだと思いますが、例外でもあるんでしょうか?
0789nobodyさん2012/11/09(金) 16:54:02.12ID:SzfafX2y
>>787
いや、PC用のページとスマホ用のページで振り分けたいだけですよ
0790nobodyさん2012/11/09(金) 17:13:03.25ID:rpNskGII
mode_write つてのをつかって

@ http://mankoumai.com/test.php

でこれまでアクセスしていたんですが

A http://mankoumai.com/test

でもアクセス出来る様にしたいです。
また、@でアクセスが来た場合にはAにリダイレクトさせるにはどうしたらいいでしょうか?
0791nobodyさん2012/11/09(金) 17:37:28.37ID:???
mod_rewriteスレへ
0792nobodyさん2012/11/09(金) 23:14:28.63ID:???
マンコがうまいわけねーだろ!
0793nobodyさん2012/11/09(金) 23:18:13.73ID:VsVEo1TJ
質問です

コミュニティーサイトを作って
その中でメンバー同士がメッセージを送れる仕組みを用意したとします。

荒らしが現れたらスパムメッセージを送りまくるようになると思います。
それを防ぐためにメッセージ送信時にcaptcha認証を行うのは
一般的ですか?他に何かいい対策はありますか?
0794nobodyさん2012/11/10(土) 00:21:55.25ID:???
ログインユーザーにまでCAPTCHAを求めるとウザい

1分とか1時間に送れるメッセージ数に上限を設ける
一度に多数の人に送れないようにする
同じ内容を同じ人に続けて送れないようにする
NGワードを設ける
サイト外(のメールアドレス)には送れないようにする

とか考えたらいくらでも思い浮かぶのが普通

他のサイトがどうしてるか学ぶべき
0795nobodyさん2012/11/10(土) 01:04:32.30ID:xD0ruwyN
奇遇だな。

荒らすのが趣味な俺様が通りますね。
0796nobodyさん2012/11/10(土) 01:08:09.64ID:/09E68J7
>>794
貴重なご意見ありがとう

それらを規制するための具体的な数値でのルール決めが非常にシビアになってきますね。
0797nobodyさん2012/11/10(土) 01:23:42.70ID:???
WEB+DB PRESS って本読んでる人いる?
0798nobodyさん2012/11/10(土) 11:21:45.36ID:???
>>796
ユーザー自身に嵐をブロックさせるとか
「この情報を管理者に報告」とかで荒らされた人に報告してもらって
NGレベルが一定より上がったら管理者が目視確認して対処すれば良い
そのあと強制退会とかさ

>>797
たまに見るね、今出てるのは安全なサイト構築とかだっけ?
「安全な…」とか言われると見なきゃいけないような気がしてくるw
0799nobodyさん2012/11/10(土) 11:45:52.82ID:???
>>797
10年分のが全部入ってるDVD買ったわ
0800nobodyさん2012/11/10(土) 14:37:38.21ID:???
>>796
お前の作った産廃なんて誰も使わないのに何でそれな心配してるの?
まさか産廃を使ってもらえると思ってるの?w
ウ\゙\ァ\カは無敵だなwwwwwwwwwwwwwww
0801nobodyさん2012/11/10(土) 15:10:05.05ID:6XHTxJnV
>>798
ありがとう

>>800
現時点でもすでに3万人のアクティブユーザーがいて
その中には荒らしもいて困ってる
0802nobodyさん2012/11/10(土) 15:43:46.49ID:+S6U6CYO
phpで二つの変数に同じ値を足すときってどうしますか?
$a = "piyo";
$b = "mage";
$a .= "hoge";
$b .= "hoge";
みたいなときに、.="hoge;をまとめられますか?
0803nobodyさん2012/11/10(土) 15:50:11.79ID:???
>>802
$a & $b .="hoge";
0804nobodyさん2012/11/10(土) 15:52:15.13ID:???
>>802
マルチ乙
ウ\゛\ァ\カ
0805nobodyさん2012/11/10(土) 15:53:39.56ID:???
>>804
お前はさっきから何と戦ってるんだ?
池沼?
0806nobodyさん2012/11/10(土) 15:55:14.63ID:+S6U6CYO
>>803
それってバージョン依存な書き方だったりしますか?
僕の5.3.5環境だと結果が$a=>"piyo",$b=>"magehoge";になります
0807nobodyさん2012/11/10(土) 15:56:45.22ID:???
>>806
$a && $b に変更しる
0808nobodyさん2012/11/10(土) 15:57:43.50ID:+S6U6CYO
>>807
$a = "piyo";
$b = "mage";
$a && $b .= "hoge";
とやってもpiyoとmagehogeになります。。
0809nobodyさん2012/11/10(土) 16:30:30.10ID:???
>>808
$a || $b だとどうよ?
0810nobodyさん2012/11/10(土) 16:34:15.27ID:+S6U6CYO
>>809
$a || $b .= "hoge"; はpiyoとmageのままです
ちなみにあなたの環境では&でできたんですか?
0811nobodyさん2012/11/10(土) 17:24:20.37ID:???
>>810
いいえ
あくまで貴方を弄ぶために適当に書いてみました

ウ\゛\ァ\カw
0812nobodyさん2012/11/10(土) 23:08:00.59ID:+S6U6CYO
>>811
要するにわからないってことですか・・・・
0813nobodyさん2012/11/10(土) 23:46:58.31ID:slna0j84
$a=(object)["0"=>"zero","a"=>"aaa"];
この状態でzeroにアクセスするにはどうしたらよいのでしょうか
$a->0や$a[0]は当然エラーが出てしまいますし
foreachで順番に回すしか無いのでしょうか。

また、この状態で"1"=>"one"を追加するにもどうしたらよいのでしょうか
これもやっぱり、$a[]="one"、$a->1="one"は出来ませんし…
0814nobodyさん2012/11/11(日) 00:09:30.89ID:???
>>801
好奇心で聞くけど、3万人ユーザーいたら広告で食える?
0815nobodyさん2012/11/11(日) 00:37:11.24ID:???
>>812
PHPなんか使ってるからそんなところで無駄な時間使うんだろ

これ以上時間と労力を無駄にしたくなかったらさっさと他言語に移行しろ

人生を無駄にしたくて仕方ない場合のみPHPを使い続けろ
0816nobodyさん2012/11/11(日) 01:34:23.00ID:???
>>815
嫌いな言語のスレでうだうだ言ってるのは時間の無駄じゃないのかな?
0817nobodyさん2012/11/11(日) 01:41:38.05ID:???
>>812
出来ないことで、いつまで荒らしと遊んでるの? さっさとNG

>>813
current($a) で

$a->{0}でアクセスできるんだけど、それは $a["0"]であって、
この方法で変換した場合は、 $a[0](のようなもの)なので、ソレを直接とる記法がない。
arrayに変換してやれば戻るけど
0818nobodyさん2012/11/11(日) 06:59:58.94ID:???
>>813
PHPの数ある欠陥の一つだな
0819nobodyさん2012/11/11(日) 07:13:11.33ID:???
ことわ
0820nobodyさん2012/11/11(日) 14:06:46.12ID:A0HHXkrC
simplexml_loadのパース精度はよくない。全オプションをやってみたが。

<?php
$opt=array();
$opt['LIBXML_COMPACT']=LIBXML_COMPACT;
$opt['LIBXML_DTDATTR']=LIBXML_DTDATTR;
$opt['LIBXML_DTDLOAD']=LIBXML_DTDLOAD;
//$opt['LIBXML_DTDVALID']=LIBXML_DTDVALID;//DTD(Document Type Definition:文書型宣言)を利用することで、パーサがデータの妥当性を検証。
$opt['LIBXML_NOBLANKS']=LIBXML_NOBLANKS;
$opt['LIBXML_NOCDATA']=LIBXML_NOCDATA;
$opt['LIBXML_NOEMPTYTAG']=LIBXML_NOEMPTYTAG;
$opt['LIBXML_NOENT']=LIBXML_NOENT;
$opt['LIBXML_NOERROR']=LIBXML_NOERROR;
$opt['LIBXML_NONET']=LIBXML_NONET;
$opt['LIBXML_NOWARNING']=LIBXML_NOWARNING;
$opt['LIBXML_NOXMLDECL']=LIBXML_NOXMLDECL;
$opt['LIBXML_NSCLEAN']=LIBXML_NSCLEAN;
$opt['LIBXML_PARSEHUGE']=LIBXML_PARSEHUGE;
$opt['LIBXML_XINCLUDE']=LIBXML_XINCLUDE;
$opt['LIBXML_ERR_ERROR']=LIBXML_ERR_ERROR;
$opt['LIBXML_ERR_FATAL']=LIBXML_ERR_FATAL;
$opt['LIBXML_ERR_NONE']=LIBXML_ERR_NONE;
$opt['LIBXML_ERR_WARNING']=LIBXML_ERR_WARNING;
$opt['LIBXML_VERSION']=LIBXML_VERSION;
//$opt['LIBXML_DOTTED_VERSION']=LIBXML_DOTTED_VERSION;
@mkdir("txt");
$xmltxt=file_get_contents("http://www.dailymotion.com/rss/jp/1";);
foreach ( $opt as $key => $val) {
echo "$key\n";
$rss = simplexml_load_string($xmltxt,"SimpleXMLElement", $val);
file_put_contents( "txt/$key.txt" , print_r($rss,true) );
}
0821nobodyさん2012/11/11(日) 15:00:14.57ID:???
rssはこれか。


<?php
include_once('simplepie/autoloader.php');
@mkdir("cache");
$feed = new SimplePie();
$feed->set_feed_url("http://www.dailymotion.com/rss/jp/1";);
$feed->init();
$feed = $feed->data['child']['']['rss']['0']['child']['']['channel']['0']['child'][''];
echo "maximum of the allocated memory = " . memory_get_peak_usage(true)/(1<<20) . "M byte\n";
file_put_contents( "SimplePie.txt" , print_r($feed, true) );
0822nobodyさん2012/11/12(月) 11:41:01.71ID:IhXlrx2G
どこで聞けばいいかわからないのでここで質問させてください。
ブログサービスにはping通知のサービスがあると思いますが、
自分のドメインでそのpingを受信することはできないのでしょうか?

pingがどういう形式で送信されているのかがわかればできそうなんですが、
それがわかりません。
0823nobodyさん2012/11/12(月) 12:34:19.69ID:???
>>822
Google先生に「更新PING XML PHP」で聞けば
どういうフォーマットで送られてきているか
書いてあるサイトをわんさか教えてくれるぜ!
0824nobodyさん2012/11/12(月) 13:02:34.44ID:IhXlrx2G
>>817
ありがとうございます

<?xml version="1.0" encoding="UTF-8"?>
<methodCall>
<methodName>weblogUpdates.ping</methodName>
<params>
<param><value>自分のサイトのタイトル</value></param>
<param><value>自分のサイトのURL</value></param>
</params>
</methodCall>

こんな書式見つけたんですが、pingって更新した記事のURLは送ってこないのでしょうか?
事前にブログ運営者のRSSフィードURLを調べといて、更新通知があったらそっから最新記事を取得するって感じでしょうか?
0825nobodyさん2012/11/12(月) 14:21:04.70ID:???
pingも分からないゴ-ミがコーディングやっててマジでウケるw
さすがphpを選ぶだけのことはあるなw
0826nobodyさん2012/11/12(月) 14:40:01.78ID:IhXlrx2G
>>819
お前もプログラミング始めたときはゴミだったんだよ
それを思い出せ
0827nobodyさん2012/11/12(月) 15:14:44.52ID:???
ゴージャス
ミステリー
0828nobodyさん2012/11/12(月) 15:53:34.36ID:???
日本語通じない荒らしに反応すんなよ。スルースキル身につけろ
0829nobodyさん2012/11/12(月) 18:45:43.66ID:Qov88rFj
現在、DBというクラスの中で各テーブル毎の処理を if で分けてます
見辛いので継承というのは使ってみたいのですが、これはテーブルを変える度にクラスを作り直さないといけないですよね?
クラス内で関数を書き換える方法って他にありますか?
getDataという関数があったとしてテーブルを切り替えたときにgetDataも書き換えたいのですが・・
0830nobodyさん2012/11/12(月) 18:50:43.05ID:???
スルー
0831nobodyさん2012/11/12(月) 21:03:43.88ID:0jsaB5yd
TeraTermで見た時に
PHPで日本語ファイル名を読み取って var_dump すると文字化けするんですけど
そのファイルの中身を読取TeraTerm上に吐き出した場合には
文字化けしていません。

lこれっていったい何が原因なのでしょうか?
0832nobodyさん2012/11/12(月) 21:08:05.67ID:???
もしかして:PHPの内部エンコーディング
0833nobodyさん2012/11/12(月) 21:13:36.23ID:0jsaB5yd
>>832
??? UTF-8にしてます。
また、ターゲットのファイルの中身も UTF-8 で統一しています。
何より、
read.php の中で 【ほげほげデータ.dat】 を読み込み
終了タイミングで

echo "データ読込に成功しました!!";

と記述した場合には、TeraTerm上に文字化けせずに正常に表示されます。

PHPの文字コードは、UTF-8に統一されているという認識ですが
間違っていますでしょうか?
0834nobodyさん2012/11/12(月) 23:12:20.07ID:???
PHPやってるとホント無駄なところで無駄な時間を使うんだな
まぁお前が好き好んで人生のうちの何時間かをその無駄なことに注ぎ込みたいのならいいだろ
0835nobodyさん2012/11/12(月) 23:25:04.25ID:???
全部utf-8で統一してるなら文字化けするわけがない。
teratermってことはどっかsshしてるんだろうけど
$ echo $LANG
とか
$ nkf -g data
とか
teraterm自体の設定を見てみるとかしてみて。
0836nobodyさん2012/11/12(月) 23:31:29.31ID:???
PHPで、年単位で無駄にしてる馬鹿も多い
0837nobodyさん2012/11/12(月) 23:43:44.35ID:0jsaB5yd
>>835
やりたい事は出来るのでOKなんですが
コマンドを試してみたところ次のありさまでした。

% echo $LANG
LANG: Undefined variable.

%nkf -g data
data: No such file or directory
0838nobodyさん2012/11/12(月) 23:46:43.05ID:???
存在するファイルにしろ
0839nobodyさん2012/11/13(火) 02:25:13.36ID:???
正規表現\sのホワイトスペースが具体的になんであるか確認した。



HT(水平タブ) is a white space.
LF(改行) is a white space.
FF(改頁) is a white space.
CR(復帰) is a white space.
(スペース) is a white space.





$arr = array(
"NUL(null文字)", "SOH(ヘッダ開始)", "STX(テキスト開始)",
"ETX(テキスト終了)", "EOT(転送終了)", "ENQ(照会)",
"ACK(受信OK)", "BEL(警告)", "BS(後退)",
"HT(水平タブ)", "LF(改行)", "VT(垂直タブ)",
"FF(改頁)", "CR(復帰)", "SO(シフトアウト)",
"SI(シフトイン)", "DLE(データリンクエスケープ)", "DC1(装置制御1)",
"DC2(装置制御2)", "DC3(装置制御3)", "DC4(装置制御4)",
"NAK(受信失敗)", "SYN(同期)", "ETB(転送ブロック終了)",
"CAN(とりけし)", "EM(メディア終了)", "SUB(置換)",
"ESC(エスケープ)", "FS(フォーム区切り)", "GS(グループ区切り)",
"RS(レコード区切り)", "US(ユニット区切り)", "(スペース)" );
foreach ( $arr as $val => $str) {
$t = preg_replace('/\s+/', '', chr($val));
if(strlen($t)===0) echo "{$str} is a white space.\n";
}
0840nobodyさん2012/11/13(火) 02:28:40.86ID:???
正規表現の置換で\sを[\0- ]にすると、文字でないものは削除できるが、エンコード次第では普通の文字も消えてしまうのか?
0841nobodyさん2012/11/13(火) 03:25:03.45ID:???
strip_tagsは構文や命令は解析してないらしい。




strip_tags関数の穴
例。
$str = "<b>余計な文字列</b>削除しないで><動く物も動かなくなっちゃうよ!";
echo strip_tags($str);
結果
余計な文字列削除しないで>

bタグはきちんと削除されていますが「しないで><」の後ろもタグと判断されて削除されちゃってます。
意図的に半角の不等号を使ったのですが、HTMLじゃない文字列まで削除されるのはちょっと困ります。
http://d.hatena.ne.jp/tek_koc/20080930/1222732987
0842nobodyさん2012/11/13(火) 03:29:31.34ID:???
タグ中に><使ったらHTML構文エラーだろ。アホか。
0843nobodyさん2012/11/13(火) 03:51:39.88ID:???
strip_tags($s) の代わりを作った。少しはタグらしいものを削除できる。

$s = preg_replace("@<[\/\!]?[a-zA-Z]+[^<>]*>@s", '', $s );
0844nobodyさん2012/11/13(火) 19:57:36.38ID:r7+OKuGH
そこは削除じゃなくエスケープでしょ?!
やり直し!
0845nobodyさん2012/11/13(火) 21:50:58.10ID:???
ソース読め
0846nobodyさん2012/11/13(火) 22:06:57.01ID:???
>>843
<script<script>>alert('err');</script</script>>
0847nobodyさん2012/11/13(火) 23:14:24.94ID:B6JGLfv/
ヒアドキュメント内で使えない文字ってありますか?

?>書くとおかしくなる気がするんですが勘違いでしょうか?
0848nobodyさん2012/11/13(火) 23:21:25.87ID:MQzA8bHk
「2012-08-21」という文字列を「2012年08年21日」に変換するにはどうしたら良いでしょうか?
いろんなやり方あると思いますが、教えてください。お願いします
0849nobodyさん2012/11/13(火) 23:30:05.71ID:B6JGLfv/
>>84はわすれて
0850nobodyさん2012/11/14(水) 02:36:04.20ID:???
>>848
いろんなやり方があると分かってるのに聞くってどういうこと?
0851nobodyさん2012/11/14(水) 02:53:09.72ID:???
echo date("Y年m月d日", strtotime("2012-10-25"));
0852nobodyさん2012/11/14(水) 09:09:07.23ID:???
PHP 5.4 (5.4.9RC1)
VC9 x86 Thread Safe (2012-Nov-07 22:35:53)
http://windows.php.net/qa/
0853nobodyさん2012/11/14(水) 10:37:53.58ID:???
>>848
print vsprintf("%04d年%02d月%02d日" ,sscanf("2012-08-21","%d-%d-%d") );
0854nobodyさん2012/11/14(水) 11:32:53.97ID:???
>>850
自分のやってる正規表現で置換する以外の賢い方法を知りたかったので

>>851,853
おおー、両方とも知らなかったです
ありがとうございました
0855nobodyさん2012/11/14(水) 12:24:11.16ID:???
>>854
速度は正規表現の方が劇的に速い
0856nobodyさん2012/11/14(水) 12:48:39.37ID:???
存在しない日付のとき問題出るしな
出たほうがいい場合が多いが
0857nobodyさん2012/11/14(水) 13:30:38.94ID:???
>2012年08年21日
年月日じゃなくて年年日にしたいそうだぞ
0858nobodyさん2012/11/14(水) 13:37:42.81ID:???
こういうやついるよな
0859nobodyさん2012/11/14(水) 14:24:47.65ID:Yf+k1U8+
【OS名】windows7
【PHPのバージョン】5.2.3
【連携ソフトウェア】MySQL5.5
【質問内容】
phpとmysqlで情報処理系のWEBアプリを構築しているのですが、
DBへのインサート時、 〜 (波線)が入力されているとインサートに失敗してしまいます。
文字コードが怪しいと思いましたが、DB・phpどちらもUTF8になっており問題ありません。
どなたか思い当たりがある方いらっしゃいましたらご教授頂けると幸いです。
■ このスレッドは過去ログ倉庫に格納されています