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

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

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

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

◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】

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

◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0554nobodyさん2010/04/02(金) 12:46:44ID:???
>>547-548
ダメだorz・・・
chownもchmodも効かない・・・

最初にchownでファイル所有者を自分に変更して、そのあとにchmodで0646に変えてやろうと思ったんだが・・・

たぶんレンタルサーバーの管理人以外はchownできないような仕組みになってるんじゃないかな?
そしてchownできない限りchmodも無力化されてしまうと・・・
0555nobodyさん2010/04/02(金) 12:51:24ID:???
レンタルサーバー屋に聞くべき。
超能力者なら分かるかもしれないけど。
0556nobodyさん2010/04/02(金) 12:57:28ID:???
いい加減ID出せやクズが
0557nobodyさん2010/04/02(金) 13:01:17ID:???
こないだもこのネタあったな
0558nobodyさん2010/04/02(金) 13:18:04ID:H+Jv7Iis
【OS名】win
【PHPのバージョン】php5.26

全文の中から、最初の一致分「あいうえお」だけ削除したいのです。

$hoge = "あいうえお、かきくけこ、さしすせそ、たちつてと、あいうえお、かきくけこ";
$aiueo = "あいうえお";
$date = str_replace($aiueo,"",$hoge);

これだと、全ての「あいうえお」が消えてしまいますので、

$aiueo = "あいうえお";
$sakujo = "^.*?$aiueo";

このような最短マッチみたいなのを使って削除したらいんだと思いますが、
どうやればいいのか分かりません。教えて下さい。お願い致します。
0559nobodyさん2010/04/02(金) 13:24:43ID:???
preg_replaceを使うか、preg_matchでマッチした場合のみ文字数分を先頭から切ればよろし
0560nobodyさん2010/04/02(金) 13:27:11ID:???
preg_replace("/$aiueo/","",$hoge,1);
0561nobodyさん2010/04/02(金) 13:51:33ID:???
>>558
【PHPのバージョン】php5.26
【PHPのバージョン】php5.26
【PHPのバージョン】php5.26
【PHPのバージョン】php5.26
【PHPのバージョン】php5.26
【PHPのバージョン】php5.26
0562nobodyさん2010/04/02(金) 15:39:52ID:H+Jv7Iis
すみません。上の例だとうまくいくのですが、
僕がやりたいパターンの場合だとうまくいきません。

$hoge = "あいうえお---かきくけこ---さしすせそ---あいうえお---かきくけこ---さしすせそ"

みたいなランダムな文章になってて、

$pattern = "^.*?---";
mb_ereg($pattern,$hoge,$honbun);

を使って、最初の「---」までを抽出しています。
この抜き出した文章を使って

$hoge = preg_replace("/$honbun[0]/","",$hoge,1);

というプロセスを経ると、全く抜けなくなります。
forの中で実行してるので、無限ループに陥って困ってます(汗)
原因を教えて頂けませんでしょうか。
0563nobodyさん2010/04/02(金) 15:43:09ID:???
for文が終了してないからじゃないの?
0564nobodyさん2010/04/02(金) 15:48:48ID:H+Jv7Iis
すみません。forじゃなくて、whileでした。
吐き出すものがずっと同じものなので、抜けないのです。

例を上げますと

hoge ="あえ@えれ---れれあえ@れ---あえ@えれ---あえい@れえれ---えあら@れえ"

のようになってて、@マークがなくなるとwhileを抜けるようにしてるのですが、
最初の「---」までが抜けていないので、@マークが減らずに無限ループに陥るのです。

上の例の$honbun[0]は確実に、抜き出したい文章を抜き出しているのですが、
教えて頂いた構文に入れると、その該当する文章が抜けないのです。
0565nobodyさん2010/04/02(金) 16:07:46ID:???
whileの条件はなんなの?
テストしてるソース張り付けられない?
0566nobodyさん2010/04/02(金) 16:31:04ID:H+Jv7Iis
}while(false!== mb_ereg("@",$honbun));

こんな感じです。

メールアドレスを「---」で区切って格納しているものがあって、
それを上から1つずつ抜き取りたいのだけれども、全部の羅列の中に
同じアドレスが2つ以上あった場合でも、上から1つずつ抜き取りたいのです。

で、一番上のメールアドレスを「---」までで抜き取ったやつを、
$hoge = preg_replace("/$honbun[0]/","",$hoge,1);

教えて頂いた↑で抜き取ると、抜き出せないのです。

ちなみに最初は
$hoge = str_replace($honbun[0],"",$hoge);

これでうまくいっていたのですが、複数ある場合に
全部が抜き出されてしまって、困ってしまって、質問させて頂いたわけです。

0567nobodyさん2010/04/02(金) 16:35:17ID:???
正規表現に引っかかる文字入ってるとか。
0568nobodyさん2010/04/02(金) 16:40:04ID:???
$honbun[0]にpreg_quoteかけるとか。

というか文字列を --- で区切ればいいんじゃないの?
explode使って。
0569nobodyさん2010/04/02(金) 16:41:37ID:???
---で区切っちゃダメだった・・・忘れて。
0570nobodyさん2010/04/02(金) 16:48:58ID:H+Jv7Iis
$honbun[0] = preg_quote($honbun[0], '/');

とりあえずこれを入れると、簡単なソースでは成功しました。
ありがとうございました。

これから実際に使ってるプログラムの方に導入してみて、
ちゃんと動くか実験してみます。ありがとうございました。
0571nobodyさん2010/04/02(金) 17:07:28ID:???
>>544
> PHPでファイル生成時に最初から rw-r--rw- というパーミションのファイルを
> 生成できれば悩まずに済むんだけどそういう方法って無い?
umask
でも大抵はchmod。
0572nobodyさん2010/04/02(金) 17:11:15ID:???
>>570
そもそもの処理でメールアドレスに ---含む場合を想定してないので、もし出来るなら気にしてね。
0573nobodyさん2010/04/02(金) 20:09:21ID:???
>>571
> umask
> でも大抵はchmod。

ありがとう、できたわ(゚∀゚)

http://www.phppro.jp/phpmanual/php/function.umask.html
↑のサイトを参考にして

 $old = umask(0);
 chmod("file.log", 0646);
 umask($old);

でできたわ。所有者が99だったりnobadyであってもumaskつかえばchmod出来ちゃうんだね。
強力なコマンドなぶん、使い方誤るとセキュリティ的にやばそう・・・

ところで冒頭の umask(0) の引数"0"って何を意味してるんだろう?
0574nobodyさん2010/04/02(金) 20:58:12ID:peh3ZVn3
phpスクリプトから同じサーバ内のデータファイルを読み込むとして
phpスクリプト以外からアクセスすると(正確にはサーバ外のファイルから)
アクセスが弾かれるようにするにはどうすればいいんでしょうか?
0575nobodyさん2010/04/03(土) 00:10:03ID:???
>>574
ファイルへのURLを直接入れたら表示したくないってことかな?

権限を上手いこと設定するか、.htaccessあるいはapacheの設定ファイルで
その特定ファイルへのアクセスを禁止する

詳しくは「htaccess アクセス制御」等で検索するかApacheスレへ
0576nobodyさん2010/04/03(土) 10:14:00ID:dm+pMn6c
function returnstr($array) {
..
...
....
return $str;
}

この戻り値を

print <<<HTML
hogehoge{returnstr($a['test'])}hogehoge
hogehoge

HTML;

のように出力の中に書きたいのですがどのように書くのが正しいのでしょうか?
0577nobodyさん2010/04/03(土) 10:17:07ID:???
出来ない
0578nobodyさん2010/04/03(土) 10:18:58ID:dm+pMn6c
$hoge = returnstr($a['test']);
としてそれを入れるしかないってことですね。
ありがとうございます。
05795332010/04/03(土) 12:20:56ID:???
>>534
w+だともしファイルが存在していたとするとそのファイルサイズが0に強制上書きされてしまいませんか?
0580nobodyさん2010/04/03(土) 13:31:38ID:???
質問しようと思って問題部分を見直してたら自己解決した。
($hoge == "foo") で $hoge に 0 が入って true になってた。
比較演算子の問題はちゃんと把握してるつもりだったけど
やっぱりよく注意してコーディングしてないとハマるね
0581nobodyさん2010/04/03(土) 13:50:07ID:???
>>580
なんでtrueになるんですか?
0582nobodyさん2010/04/03(土) 16:17:13ID:???
真実を述べてるから
0583nobodyさん2010/04/03(土) 18:45:24ID:???
>>581
"hoge" は数字にすると0(数値に相当するものが入ってない)だから。
$hogeに数字が入ってると、自動的に数値で比較してくれる便利機能がついてる。

警告の一つも出してくれりゃいいのになぁ。
0584nobodyさん2010/04/03(土) 22:10:28ID:???
<img src="(画像ファイルへのパス)">

のように画像を開くときは画像ファイルへのパスを指定する必要があるわけですが
絶対パス(realpath()で得られるパス)は受け付けてくれません。

代わりにドキュメントルートからのパス(多くの場合はpublic_htmlから)を指定する必要があるわけですが

 /zettai/path/public_html/pic/1.gif

のように絶対パスで与えられているファイル名をドキュメントルートからのファイル名

 /pic/1.gif

に変えるにはどういう方法を使えばいいでしょうか?
0585nobodyさん2010/04/03(土) 23:17:14ID:???
文字列からドキュメントルートからのパスを切り取るというのはどうか
0586nobodyさん2010/04/04(日) 01:01:02ID:???
相対パス求めるアルゴリズム作ってたらなぜか絶対パス求めるアルゴリズム考えてたわw
しかも>>55でもうやってるしwせっかく作ったんだし公開しておこう
http://ideone.com/QMVoQhKL
0587nobodyさん2010/04/04(日) 11:32:33ID:VKZUtm2V
【OS名】FreeBSD 7.1-RELEASE-p10 i386
【PHPのバージョン】PHP 5.2.12
【連携ソフトウェア】
【質問内容】
(sakuraレン鯖使用です)

ttp://www.abe-tatsuya.com/web_prog/php/mail2php.phpのサイトを参考にして
メールを受信してtwitterに投稿するPHPを作っています。

受信したものをそのまま投稿するのは上手くいくのですが、
アドレスに応じて名前を追加しようとするとうまくいきません。
(というより別関数で本文に内容を付加するのがうまくいかないです。)

原因は何でしょうか?
(使用しているファイルを次に投稿します)
0588nobodyさん2010/04/04(日) 11:40:00ID:VKZUtm2V
>>587の続きです
[.mailfilter]
to "| /usr/local/bin/php -q /home/user/www/tweet/mail.php"

[mail.php]
<?php
#-- PEAR の Mail/mimeDecode.php を読み込む
require_once '../../pear/php/Mail/mimeDecode.php';
require_once("post.php");
require_once("xml.php");

#-- メールデータ取得
省略:参考サイト通りstdinで取得
#-- From フィールドの取得
$from = $mail_data->headers['from'];
#-- To フィールドの取得
$ToAddress = $mail_data->headers['to'];
#-- Subject フィールドの取得
$Subject = $mail_data->headers['subject'];
$Subject = mb_convert_encoding($Subject,"UTF-8","JIS");
#-- 本文の取得
$MailBody = $mail_data->body;
$MailBody = mb_convert_encoding($MailBody,"UTF-8","JIS");
//アドレス処理はあとでやる
$fff = "mail";
$aaa = add_name($fff,$MailBody);

$MailBody = $MailBody.$aaa;
//twitter投稿
Post($MailBody);

?>
0589nobodyさん2010/04/04(日) 11:44:58ID:VKZUtm2V
さらに>>588の続きです。
連投スミマセン;;
改行が多すぎるって怒られました><

[xml.php]
<?php
function add_name($from,$body){
$xml = simplexml_load_file('document.xml');
foreach($xml->person as $person){
if($person->mail == $from ){
$body = $person->name . $body;
return $body;
}
}
}
?>

[document.xml]
<?xml version='1.0'?>
<data>
<person>
<mail>mail</mail>
<name>たろう</name>
</person>
</data>
0590nobodyさん2010/04/04(日) 18:50:22ID:z61eZwKM
add_name()の返り値は確認したのか?
0591nobodyさん2010/04/04(日) 19:51:07ID:???
戻り値?返り血?
0592nobodyさん2010/04/04(日) 20:06:00ID:???
いきなりmb_convert_encodingしてるが、
本当に JIS なのか?
mb_language('uni'); // unicode
とかになってないかい?
ちなみに、mb_detect_encoding では正しく JIS が判断できないよ。
バグじゃないけどね。
05935872010/04/04(日) 21:40:37ID:VKZUtm2V
お返事ありがとうございます

>>590
質問内容が悪かったですね(汗
メール送信したときに、add_name()など関数を使うと値が返ってきません。
mail.phpをブラウザで叩いたときは値が返ってきます(echoで確認しました)

>>592
文字コードはとりあえず文字化けしなかったのであんまり気にしていませんでした><
コンバートしなくても良いといいことですか??


0594nobodyさん2010/04/05(月) 06:07:53ID:uTolPHHQ
【OS名】WindowsXP SP3
【PHPのバージョン】php5.2.13
【連携ソフトウェア】Apache2.2.15
【質問内容】

a.htmlからa.phpを呼び出しています。
a.htmlには、
<input type="checkbox" name="cb_op3" value="1">
とデフォルトでチェックがされていません。
a.phpでは、
$cb_op3 = $_POST['cb_op3'];
の様に参照しています。

チェックボックスがチェックされていない場合、
PHP Notice: Undefined index: cb_op3 in D:\htdocs\a.php on line XX
のようにPHP Noticeが出力されます。

これが出ないようにするには、どうすれば良いですか?
よろしくお願い致します。
0595nobodyさん2010/04/05(月) 06:53:11ID:???
>>594

$cb_op3 = (isset($_POST['cb_op3'])) ? $_POST['cb_op3'] : "";
0596nobodyさん2010/04/05(月) 06:58:11ID:uTolPHHQ
>>595
ご回答、ありがとうございます。
$cb_op3 = htmlspecialchars(@$_POST['cb_op3']);
とすることで、自己解決しました。
0597nobodyさん2010/04/05(月) 07:06:44ID:uTolPHHQ
【OS名】WindowsXP SP3
【PHPのバージョン】php5.2.13
【連携ソフトウェア】Apache2.2.15
【質問内容】

phpのエラーをapacheのエラーログに出力したいのですが、
出来ません。
php.iniのerror_logには何も指定していません。
phpinfo()で確認すると、C:\WINDOWS\temp\php-errors.logとなっています。
試しに、
error_log = "L:\logs\php.log"
error_log = "L:\\logs\\php.log"
等を指定しても、
phpinfo()で確認すると、C:\WINDOWS\temp\php-errors.logと変わりません。

知っている方、よろしくお願い致します。
0598nobodyさん2010/04/05(月) 07:37:57ID:???
>>597
phpinfo() の Loaded Configuration File と別の php.ini を書き換えたりしてない?
0599nobodyさん2010/04/05(月) 07:51:41ID:uTolPHHQ
php.iniをよく見たら、

;;;;;;;;;;;;;;;;;;
; Fopen wrappers ;
;;;;;;;;;;;;;;;;;;
の項に
error_log="C:\WINDOWS\temp\php-errors.log"
の記述が。。。

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Error handling and logging ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
の項の
error_log = filename
ばかり変更していました。


でも、紛らわしいよ。。。



ありがとうございました。
0600nobodyさん2010/04/05(月) 22:18:52ID:afFcX18l
【OS名】FreeBSD
【PHPのバージョン】php5.10
【連携ソフトウェア】なし
【質問内容】
csvでやっていた処理を、拡張性を見据えてxmlにしようと思って実験中ですが、疑問ができたので質問させて頂きます。
SimpleXMLElementを使っているのですが、
これは読み出し及び項目追加には便利だとは思います。
しかし、<data></data><data></data>などの配列化した項目を消したりしようとすると途端に不便になりました。
こういうものなのでしょうか?
popやshiftに相当するものを使用し、最後にasXMLで書き出せるというのが理想なのですが、
一度全部読み出し、もう一つオブジェクトを生成し、そちらにプロパティを移して新しいオブジェクトから書き出す
というのはどうも違和感があります。
0601nobodyさん2010/04/05(月) 22:23:23ID:???
$xml = simplexml_load_file($filepath);
foreach($xml->hoge as $foo){
 if ($foo->updatedate+(24*60*60) < time()){
  $foo = null;
 }
}
$xml->asXML($filepath);
例えばこういった組み方をすると、空のゴミタグが残ってしまいますが、ゴミタグも消したいのです。
何か代換手段は無いものでしょうか
0602nobodyさん2010/04/05(月) 22:29:17ID:afFcX18l
すいません。>601age忘れました

現在はこうやっていますが、最初のnewxmlの定義が面倒です

$xml = simplexml_load_file($filepath);
$newxml = new SimpleXMLElement("<?xml version='1.0' ?>\n<root></root>");
$newxml->addChild("bar1",$xml->bar1);
$newxml->addChild("bar2",$xml->bar2);
$newxml->addChild("bar3",$xml->bar3);

foreach($xml->hoge as $foo){
 if ($foo->updatedate+(24*60*60) >= time()){
  $newxml->addChild("hoge",$foo);
 }
}
$newxml->asXML($filepath);
0603nobodyさん2010/04/05(月) 22:30:47ID:afFcX18l
実際にはhogeの部分も階層化させるため、もっと複雑な処理になります。
0604nobodyさん2010/04/05(月) 22:36:54ID:???
【OS名】何でも
【PHPのバージョン】php5.3
【連携ソフトウェア】sqlite3
PHP5に標準搭載されているSQLite3 拡張モジュールで質問です。
close()は必須なのでしょうか? たとえば
$db = new SQLite3("hoge.sqlite");
try {
 $result = $db->query("select ...");
 $row = $result->fetchArray();
 return $row["hoge"];
} catch (Exception $e){
 die();
}
$db->close();
なんていうサンプルを時々見かけますが、これって僕のPHP文法の
理解が正しければclose();は通りませんよね?また
$db = new SQLite3("hoge.sqlite");
try {
 $result = $db->query("select ...");
 $row = $result->fetchArray();
 $hoge = $row["hoge"];
 $db->close();
 return $hoge;
} catch (Exception $e){
 die();
}
だったとしても例外時にはclose()されませんよね? これは
} catch (Exception $e){
 $db->close();
 die();
}
とかいちいちやるものなんでしょうか?
0605nobodyさん2010/04/05(月) 22:58:06ID:???
デストラクタと言うものがあってだな
不要になったときに自動で解放される
0606nobodyさん2010/04/05(月) 23:08:13ID:???
>>605
ということは明示的にcloseしたい理由がなければ放置でもOKってことですか?
上記の例では1番は論外としても2番か、それか記述せずでもOKと?
0607nobodyさん2010/04/06(火) 00:32:21ID:???
実行が終わる直前や

$db = new SQLite3("hoge.sqlite");
たとえばこの変数に
$db = null; とか
$db = array(); とか
$db = new SQLite3("hoge.sqlite"); とか
のように上書きしてしまってもう使えなくなってもデストラクタが動く
0608nobodyさん2010/04/06(火) 00:34:24ID:???
なるほど。じゃあ実質不要ですね。気にしないことにします。
サンクス。
0609nobodyさん2010/04/07(水) 02:22:36ID:DRQlFq+M
フォームからの情報を受け取りたいのですが
urldecodeは必要ですか?
$_GET[] の時点で既にurldecodeされてるのでしょうか?
0610nobodyさん2010/04/07(水) 02:59:21ID:???
<?php
echo print_r($GET);
?>
してみなよ
0611nobodyさん2010/04/07(水) 03:12:56ID:???
やってみます
0612nobodyさん2010/04/07(水) 06:13:24ID:dfs6oC5W
function checkCookie(){
if($_COOKIE['checkCookie']){return 1;}
else{
$expire = time() + 86400*14;
if(setcookie("checkCookie",time(),$expire)){return 1;}
else{return 0;}
}
}

このような関数を作ってクッキーが有効かチェックしたいのですが、オフにしても0が帰ってこないようです。
原因わかりますか?
0613nobodyさん2010/04/07(水) 06:17:39ID:???
>>612
if(setcookie("checkCookie",time(),$expire)){return 1;}
ブラウザの設定でOFFにしてもサーバから送信は可能だから
ここがとりあえず成功しちゃうんだと思われる

0614nobodyさん2010/04/07(水) 06:27:00ID:dfs6oC5W
>>613
ありがとうございます。
ということは、
セットする→セットしたクッキーが存在するか否か
という処理だと行けるってことですよね?
0615nobodyさん2010/04/07(水) 06:32:37ID:???
>>614
一度の処理中での確認はできない
一回送信して次回のリクエストで帰ってくるかどうかでのチェックが必要。

俺がたまにやるのは、ページでセットして、JSでチェックする

index.php
<?php
setcookie("checkCookie",time(),$expire);
?>
<html>
<head>
<script type="text/javascript" src="check_cookie.php"></script>
</head>
</html>

check_cookie.php
<?php
if (!isset($_COOKIE['checkCookie'])) print "alert('no cookie!')";
?>
0616nobodyさん2010/04/07(水) 06:39:12ID:dfs6oC5W
>>615
わかりました。
さんくすです
0617nobodyさん2010/04/07(水) 07:56:30ID:3KWYoUnh
【OS名】WindowsXP SP3
【PHPのバージョン】php5.2.13
【連携ソフトウェア】Apache2.2.15
【質問内容】

php5.2.13に対応しているeAcceleratorのバイナリを配布しているサイトはありますか?
0618nobodyさん2010/04/07(水) 08:03:06ID:???
試してないけど
http://www.sitebuddy.com/PHP/Accelerators/eAccelerator_windows_binaries_builds
「eAccelerator 0953 for PHP 5.2.10」とかでいいんじゃないかな
0619nobodyさん2010/04/07(水) 12:05:21ID:qoBEK7gJ
指定したURLに何秒後かに飛ばすことは出来ますか?
0620nobodyさん2010/04/07(水) 12:12:46ID:???
>>619
5秒後にnext.htmlへ飛ばす
header( 'refresh: 5; url=next.html' );

ちなみにHTMLのタグでも可能
<head>
<meta http-equiv="refresh" content="5;URL=next.html">
</head>
0621nobodyさん2010/04/07(水) 12:28:57ID:???
headerはブラウザの設定により飛ばないからmetaの方が良いかも
0622nobodyさん2010/04/07(水) 12:37:23ID:qoBEK7gJ
ありがとうございます。metaでやってみます
0623nobodyさん2010/04/07(水) 13:29:34ID:3KWYoUnh
>>618
5.2.13に対応していますか?
0624nobodyさん2010/04/07(水) 13:45:29ID:???
>>623
わからないから>>618は無視してくれ、すまんな
0625nobodyさん2010/04/07(水) 14:33:07ID:W7cZb24v
掲示板の書き込み確認画面で書き込み内容を表示するときは改行文字を<br>にして表示します。
同意して書き込む際に、hiddenで送る内容ですが、仕様上<br>などのタグをhiddenに含めるとエラーに成ります。
なので、hiddenには<br>などで置換していない状態の書き込みを入れたいのですが、この場合、改行文字がhtmlソースで働いてhtmlソースが乱れてしまいます。
何かで改行文字を置換したいのですが何がいいでしょうか?2chの場合「?」で置換されているようです。
0626nobodyさん2010/04/07(水) 14:47:15ID:???
<input type="hidden" value="aaa

bbb">
みたいな感じでそのままでもいいと思うけど、どうしても変えるなら

<input type="hidden" value="aaa\n\nbbb">
とかかな
0627nobodyさん2010/04/07(水) 14:50:15ID:W7cZb24v
>>626
2chの改行文字の&#10;は全角のはてな。
全角のはてなだったら問題ないですね!
これでいきます。
0628nobodyさん2010/04/07(水) 14:52:19ID:???
全角のはてなの入った文はどうするの?
0629nobodyさん2010/04/07(水) 15:06:59ID:W7cZb24v
改行文字を&#10;で置換して、それをhiddenに入れる。
↓
&#10;を<br>に置換する。

全角のはてなを「&#10;」の実体表記で書かれる、それは&amp;#10になるはず・・・
0630nobodyさん2010/04/07(水) 15:45:55ID:OLVUqXLt
header("Location: ./test.php");
で飛ばす時に一緒にPOSTで値などを渡したりする方法はありますか?
0631nobodyさん2010/04/07(水) 15:46:59ID:???
セッション使えセッション
06326302010/04/07(水) 16:04:23ID:OLVUqXLt
>>631
ありがとうございます。
携帯でもセッション使えるかどうか試してみます。
06336302010/04/07(水) 17:11:09ID:OLVUqXLt
先ほど質問したばかりなんですがすんません。
#index.php
session_start();
$_SESSION['riremito']='ばしるーら';
header("Location: ./test.php");

#test.php
session_start();
echo $_SESSION['riremito'];
としているのに表示されないのですが、書き方間違ってますでしょうか?
0634nobodyさん2010/04/07(水) 17:16:17ID:3KWYoUnh
>>624
いいえ、ありがとうございます。
0635nobodyさん2010/04/07(水) 17:22:16ID:???
>>633
携帯ならsession.use_trans_sidで検索
0636nobodyさん2010/04/07(水) 17:33:46ID:3GsFBU25
mb_regex_encoding("UTF-8");
if(mb_ereg( "[a-z]*",$string))
てすると全部TRUE返ってくるんですが
アルファベットのみの文だけ拾いたいのです
NoEditorというエディタだと拾ってるんですが
どういう事なんでしょうか?
0637nobodyさん2010/04/07(水) 17:41:14ID:???
>>636
0文字の[a-z]にマッチする
0638nobodyさん2010/04/07(水) 18:01:53ID:???
ありがとう*
0639nobodyさん2010/04/08(木) 01:08:32ID:bQ9+sypi
みなさんこんばんは

外部サイトの画像をリサイズしてキャッシュして表示する
スクリプトかAPIのようなものを探してるんですが、
探してる途中にgoogle app engineで作ったと思われる
以下のようなもの(image-resize.appspot.com)を発見いたしました。
ttp://groups.google.co.jp/group/google-appengine/browse_thread/thread/56ba9c4e8fa23d4a

これを画像URLを入れ替えて勝手に自分のサイトで使うと怒られたりしますか?
ちなみに当方英語は読めません
0640sage2010/04/08(木) 09:23:03ID:???
せめて翻訳サイトで見てみるくらいしてみろよ
06416252010/04/08(木) 09:41:24ID:L4uu4ArY
昨日、掲示板の改行文字の件で質問したものですが&#10;ではうまくいきませんでした。
なにか他の考え方がある方はいますでしょうか?
0642nobodyさん2010/04/08(木) 09:51:26ID:???
>>641
改行文字を変換する理由はなに?
0643nobodyさん2010/04/08(木) 09:59:22ID:L4uu4ArY
>>641
調べてみたら「&#10;」って改行文字だったんですね。
2chに書くと全角のはてなになったので勘違いしてました。

2chのように、
フォームから入力してPOSTで送信
↓
確認画面
↓
書き込み

という仕組みなんですが、確認画面で表示するのは改行文字を<br>に置換しますが、書き込み用にhiddenに入れるのを
<br>で置換するとサーバー側の仕様(タグの受信がNGなのです)でエラーを吐いてしまいます。
0644nobodyさん2010/04/08(木) 10:06:18ID:???
>>643
だからhiddenに入れるのをなんで<br>に置き換える必要があるの?
0645nobodyさん2010/04/08(木) 10:08:00ID:???
釣りじゃないの?
0646nobodyさん2010/04/08(木) 10:09:44ID:L4uu4ArY
>>643
hiddenにいれるのが\nのままだとhtmlソースに変な改行が入ってしまうのが気になってるからです。
0647nobodyさん2010/04/08(木) 10:13:24ID:???
つ php エスケープ
0648nobodyさん2010/04/08(木) 10:59:42ID:???
>>646
試してないけど\nを\\nに置き換えればいけるかも

//変換
$text = strtr($text, array("\\" => "\\\\", "\n" => "\\n"));
print $text;

//復元
$text = strtr($text, array("\\\\" => "\\", "\\n" => "\n"));
print $text;

ただ置き換えたい理由を未だ理解できない・・
0649nobodyさん2010/04/08(木) 11:30:09ID:???
<br>にしたままでいいから、 hiddenのとこに書き出すのは  htmlspecialchar かけて。

0650nobodyさん2010/04/08(木) 12:07:50ID:???
それだと2重になるからだめじゃない?
0651nobodyさん2010/04/08(木) 12:12:27ID:bQ9+sypi
>>640
翻訳ぐらいしてるわボケ
お前はコードまで一緒に訳される機械翻訳で意味分かったのか?
0652nobodyさん2010/04/08(木) 12:22:38ID:???
>>646
htmlに余計な改行が入ってソースが気になるなら、そもそもがhiddenなんかに持たせずにphpのsessionに保存すれば?
どうせ、確認画面で表示だけだと値をpost出来ないからhiddenに持たせようとかそんな程度の話でしょう?(勝手な妄想だから、違っても気にするな)
textareaタグを使って、見た目をただの表示っぽく調整するとか、方法はいろいろあると思うけどね。

やりたい事の実現方法案を自分で決めてしまって、その案に対しての技術的な質問をしてもなかなか解決しない場合があるよ。
何のためにhiddenで値を保持しようとしているのか、まずはそこから話さないとアドバイスしにくいんじゃね?
0653nobodyさん2010/04/08(木) 12:25:35ID:???
そういうのにSIDを使いまわすのが理想的なのかは個人による。
たぶんやりたいのは投稿内容の確認画面ではないかとエスパー。
0654nobodyさん2010/04/08(木) 12:27:24ID:???
>>651
640じゃないが、機械翻訳したうえで、オリジナルサイトと両方見ながら読む努力しろよ。
コンピュータ用語なんてまともに翻訳できなくて当たり前なんだから。

そもそも、コードが翻訳された部分なんて、
>これを画像URLを入れ替えて勝手に自分のサイトで使うと怒られたりしますか?
こんなことを知るうえでは無関係な場所だから読む必要ないだろ。
■ このスレッドは過去ログ倉庫に格納されています