人に聞けない痔の悩み、これでスッキリ >>

path_infoで動的ページの静的処理をしようとしています
path_infoをつかって
xxx.php?id=123

xxx.php/123

xxx.php/123.html
などの入力で動くようにはできたのですが、.phpをはずすべく
.htaccess内の設定でうまくいきません。

ネットで出てきた方法として2つ見つかったのですが、

<FilesMatch "^xxx$">
ForceType application/x-httpd-php
</FilesMatch>
とするとファイルが見つかりませんになります

<FilesMatch "^xxx$">
AddType application/x-httpd-php
</FilesMatch>
とするとInternal Server Error(500 error)になります

これは何が悪いのでしょうか。
どこをどうすれば拡張子なしで認識するようになるのでしょうか。

.htaccessの使用はサーバーで認められていて、以前からDirectoryIndexやErrorDocumentの設定をして使用しています
PHPは4と5の両方で試しましたが、どちらでも同じ結果でした

どうかお分かりの方ご教授ください。
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

apache2.0では正規表現の扱いが違うようです。

そこで本家で確認、
http://httpd.apache.org/docs/2.0/ja/sections.html
<FilesMatch>のセクションをみると"ダブルコーテーションを使ってません。
そこでこれを試してください、
<FilesMatch \.php$>
ForceType application/x-httpd-php
</FilesMatch>
この設定を.htaccessの最後に追加する際、最終行の改行をお忘れなく、
それをわすれると同じく500 error Internal Server Errorとなります。
<FilesMatch>を記述しない限りphpは正常に動いてるんでですよね?
それだとMIMEタイプメディアの件は関係ないと思います。

この回答への補足

ありがとうございます。
本来ならお礼の欄に書くべきところでしょうが、字数制限があるのでこちらでお許しください


早速教えて頂いたページのFilesMatchの欄も読みました
http://httpd.apache.org/docs/2.0/ja/mod/core.htm …
例題のところでは"(ダブルクォーテーション)はあるのですが・・・


それはさておき、早速結果報告です

<FilesMatch>を記述してもしなくても基本的にphpは正常に稼働しています

"(ダブルクォーテーション)を付けても付けなくても動作は同じでした

<FilesMatch ^test$>
AddType application/x-httpd-php
</FilesMatch>
<FilesMatch \.php$>
ForceType application/x-httpd-php
</FilesMatch>
とするとphpだけでなく、htmlファイルなどを表示させようとしても500 error Internal Server Errorがでます。

AddType application/x-httpd-php
を記述すると同一ディレクトリ内全てのファイル(試したのはphp,html,gif)が500 error Internarl Server Errorとなるようで、下層ディレクトリ内のgifファイルは正しく表示されたもののphpファイルは500 error Internal Server Errorでした
が、サーバー会社曰くAddTypeは使用可能とのことです

AddType application/x-httpd-php .php
と後ろを追加して試したのですが、この場合404 errorになりました

<FilesMatch ^test$>
ForceType application/x-httpd-php
</FilesMatch>
<FilesMatch \.php$>
ForceType application/x-httpd-php
</FilesMatch>
上のようにForceTypeに書き換えてみたら404 errorになりました


testをtest.phpにして表示させたら表示するのでphp側のミスはないと思います
これ以外で考えられるのが.htaccessの記述ミスなどですが、改行や記述位置などに問題があるのでしょうか。


AddHandler php5-script .php
DirectoryIndex index.php index.cgi index.shtml index.html index.htm index.hdml .ht
ErrorDocument 404 /404.html
<FilesMatch ^test$>
AddType application/x-httpd-php .php
</FilesMatch>
<FilesMatch \.php$>
ForceType application/x-httpd-php
</FilesMatch>

としています。
最初のAddHandler php5-script .phpはphpをバージョン5で動かすための記述で、これを抜けばバージョン4になります
これを付けた場合と付けていない場合の両方を試したのですが、結果はどちらも同じです
この記述の中にどこか問題でもあるのでしょうか

補足日時:2009/12/28 10:29
    • good
    • 0

<FilesMatch "^$">を使った場合動きましたか?


お答えください。

下記の要領でテストしてみてください。
phpファイル名はtest.phpとする。
このファイルに拡張子なしのtestとしてアクセスするためには、
1 test.phpをtestにrenameまたはcopyしておく。
2 <FilesMatch "^test$">
AddType application/x-httpd-php
</FilesMatch>
しらべた結果これで動くはずです、但しApache 1.3.31 =< の場合、
このバージョン情報は不正確なのでとりあえず1.3xxなら、
2でだめだった場合<FilesMatch ~ "^test$">として試してみてください。
~と"^test$"の間にスペース。
動かない場合、エラーはそのままペーストしてください。

この回答への補足

お礼の字数制限にかかったのでこちらで続きです。


ちなみに今レンタルサーバーのサポートページを見ていましたら
MIMEタイプメディア一覧が載っていました
application/andrew-inset .ez
application/mac-compactpro .cpt
application/msword .doc
application/octet-stream .bin .dms .lha .lzi .exe .class
application/oda .oda
application/pdf .pdf
application/postscript .ai .eps .ps
application/rtf .rtf
application/smil .smi .smil
application/vnd.mif .mif
application/vnd.ms-powerpoint .ppt
application/x-bcpio .bcpio
application/x-cdlink .vcd
application/x-chess-pgn .pgn
application/x-cpio .cpio
application/x-csh .csh
application/x-director .dcr .dir .dxr
application/x-dvi .dvi
application/x-futuresplash .spl
application/x-gtar .gtar
application/x-hdf .hdf
application/x-javascript .js
application/x-koan .skp .skd .skt .skm
application/x-latex .latex
application/x-netcdf .nc .cdf
application/x-sh .sh
application/x-shar .shar
application/x-shockwave-flash .swf
application/x-stuffit .sit
application/x-sv4cpio .sv4cpio
application/x-sv4crc .sv4crc
application/x-tar .tar
application/x-tcl .tcl
application/x-tex .tex
application/x-texinfo .texinfo .texi
application/x-troff .t .tr .roff
application/x-troff-man .man
application/x-troff-me .me
application/x-troff-ms .ms
application/x-ustar .ustar
application/x-wais-source .src
application/zip .zip
audio/basic .au .snd
audio/midi .mid .midi .kar
audio/mpeg .mpga .mp2 .mp3
audio/x-aiff .aif .aiff .aifc
audio/x-pn-realaudio .ram .rm
audio/x-pn-realaudio-plugin .rpm
audio/x-realaudio .ra
audio/x-wav .wav
chemical/x-pdb .pdb .xyz
image/bmp .bmp
image/gif .gif
image/ief .ief
image/tiff .tiff .tif
image/x-cmu-raster .ras
image/x-portable-anymap .pnm
image/x-portable-bitmap .pbm
image/x-portable-graymap .pgm
image/x-portable-pixmap .ppm
image/x-rgb .rgb
image/x-xbitmap .xbm
image/x-xpixmap .xpm
image/x-xwindowdump .xwd
model/iges .igs .iges
model/mesh .msh .mesh .silo
model/vrml .wrl .vrml
text/css .css
text/plain .asc .txt
text/richtext .rtx
text/rtf .rtf
text/sgml .sgml .sgm
text/tab-separated-values .tsv
text/x-setext .etx
text/xml .xml
video/mpeg .mpeg .mpg .mpe
video/quicktime .qt .mov
video/x-msvideo .avi
video/x-sgi-movie .movie
x-conference/x-cooltalk .sice

今回のapplication/x-httpd-phpが見あたらないのですが、このサーバーでは利用不可ってことなのでしょうか
.htmlとか.htm、.phpなどどれも載ってませんが

補足日時:2009/12/27 17:05
    • good
    • 0
この回答へのお礼

何度もおつきあいありがとうございます。

<FilesMatch "^$">は前回ご教授頂いた際に試しましたが動きませんでした
500 error Internal Server Error
でした

次に今回ご教授頂いたtestで試す方法ですが、~を入れる形も入れない形もどちらも
500 error Internal Server Error
とでました
これの応用版でAddTypeではなくForceTypeも試しましたが
<FilesMatch "^test$">
ForceType application/x-httpd-php
</FilesMatch>
の形でファイルが見つからない404Error、~を入れる形では500 error Internal Serve Errorとなりました

テスト環境はphpはバージョン5、ApacheはApache 2.0.xxです。

お礼日時:2009/12/27 17:04

リンクからの請負で何も考えてませんでした。

ご指摘の通りリンクの設定ではすべての
ファイルに適応されそうですね。それでその設定で動きましたか?

改めて<FilesMatch>をググって見ますと
<FilesMatch 正規表現>
</FilesMatch>
となっているわけですから、
ファイル名がtest.phpで拡張子で判別するなら
<FilesMatch "\.php$">
ForceType application/x-httpd-php
</FilesMatch>
ファイル名のtestで判別するなら
<FilesMatch "^test">
ForceType application/x-httpd-php
</FilesMatch>
注意:この場合testhogeというファイルがあればそれもマッチすると思う。
でうまくいきませんか?
正規表では"^"始まり"$"は終わりを意味するわけですから、試されたように"^test$"と
するとそんなファイルがないということになったと思います。
では純粋にtestだけにマッチさせたい場合というと^test$が使えないわけですから、
"^test\.php$"とするしかないんですかね?そのへんはどう実装してるのかわかりません。
今回の設定は確認しているわけではありません、あしからず。
    • good
    • 0
この回答へのお礼

度重なる回答ありがとうございます。
とりあえず稼働中のものとは別で、テスト用ディレクトリを作って実行してみたのですが、認識しませんでした
どうやらfilesmatch自体が認識されていないようです

単なる記述ミスを避けるため、ご記入頂いたものをコピペしても試しましたが動きません
.htaccessは既にDirectoryIndexやErrorDocumentで動かしているので、ファイル名の記述ミスや置く場所の間違いなどはないと思います

サーバー会社にForceTypeやAddTypeなどは使えるか念のため確認もしてみましたが、使えるとのことです。

.htaccessの最初に持って行ったり、最後に持って行ったり場所も動かしてみましたが、やはり動きません

この場合何が悪いのでしょうか。
記述が問題ないとすると私の知識では見当もつかないので可能性がある場所だけでも教えて頂けないでしょうか。

お礼日時:2009/12/26 17:06

<FilesMatch "^$">


ForceType application/x-httpd-php
</FilesMatch>

で動くようです。つまり"xxx"を除く。

参考URL:http://kawama.jp/archives/2005/09/php_1.html
    • good
    • 0
この回答へのお礼

ありがとうございます。
1つ疑問なのですが、filematchに ~$とすると全部のファイルにphpファイルの適用が施されてしまう気がするのですが、問題ないのですか?
下層ディレクトリも入れるとphp以外にもhtmlやcgi,gif,jpg,plなどなどかなりいろんな種類のファイルがあるのですが

お礼日時:2009/12/26 11:38

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qapacheで拡張子を省略してアクセスする記述

Lampp環境にあるサーバ上で
.phpの拡張子なしでアクセスするには
httpd.confのどの部分をどのように記述すればよいでしょうか?
よろしくお願いいたします。

Aベストアンサー

httpd.confで該当スクリプトを置くディレクトリに対し Options MultiViews を設定する。
具体的には以下のような感じ。

<Directory /usr/local/apache/htdocs/hoge/>
        AllowOverride all
        Options MultiViews
    </Directory>


ただ、httpd.confに設定すると実行速度的には少々不利なのだったと記憶します。
.htaccessというファイルを作成してその中に

<FilesMatch "^$">
ForceType application/x-httpd-php
</FilesMatch>

といった記述を加える方が実行速度的には速いのだったような。。。違ったかな?
ちなみに.php以外のファイルは拡張子ありでよいならhttpd.confで

DefaultType application/x-httpd-php

とすればよいだけです。
なお、xxx.phpというファイルをxxxという拡張子無しのファイルへコピーしておくことをお忘れなく。

httpd.confで該当スクリプトを置くディレクトリに対し Options MultiViews を設定する。
具体的には以下のような感じ。

<Directory /usr/local/apache/htdocs/hoge/>
        AllowOverride all
        Options MultiViews
    </Directory>


ただ、httpd.confに設定すると実行速度的には少々不利なのだったと記憶します。
.htaccessというファイルを作成してその中に

<FilesMatch "^$">
ForceType application/x-httpd-php
</FilesMatch>

といった記述を加える方が実行速度的には速いのだったような。。。違...続きを読む

Qhtaccessで拡張子を非表示にしてHTML文書を表示させる方法

htaccessで拡張子を非表示にしてHTML文書などを表示させる方法が分かりません。
具体的に言えば、example.htmlというファイルを
http://www.example.com/example
というURLで表示したいのです。

http://mikeneko.creator.club.ne.jp/~lab/web/htaccess/にて調べてみたのですが、よく分かりませんでした。

よろしくお願いします。

Aベストアンサー

#2です。
mod_rewriteは正規表現を使えるので、

RewriteRule ^([A-Za-z0-9]+)$ $1.html

のように書くことも出来ます(英数字の並びに.htmlを付加する)。

DefaultTypeを使う方式のほうは、

DefaultType text/html
<Files "example2">
DefaultType text/css
</Files>

でどうでしょうか(未確認)。

>今度はhttp://www.example.com/example.htmlは表示されなくなってしまいました。
>両方で表示できるサイトを知っているのですが、
案1: mod_rewriteを使う
案2: 内容が同じ2つのファイルを置く。またはサーバーにログインできればリンクを張るほうが良い。

Q.htaccessで拡張子なしのファイルを表示させる方法

拡張子なしのファイルを拡張子付きのファイルに関連付けるための質問です。

以下のようにhtaccessを設定すると「abc10.txt」以降はすべて「abc1.txt」にリダイレクトしてしまいます。
ファイル名の数字は9までしか認識しないようです。
例えばリダイレクト先のファイル名を「abc10.txt」に指定すると1術しか認識せず「abc1.txt」を表示してしまいます。
「abc11.txt」も「abc12.txt」も同じく「abc1.txt」を表示してしまいます。

例1
http://sample.com/abc9 (拡張子なしのファイル指定)
表示:abc9.txt
abc1.txt ~ abc9.txtは正しく表示される。

例2
http://sample.com/abc12 (拡張子なしのファイル指定)
表示:abc1.txt
abc10.txt ~ abc12.txtはすべてabc1.txtが表示される。


RewriteEngine on
RewriteRule ^abc1 abc1.txt
RewriteRule ^abc2 abc2.txt
RewriteRule ^abc3 abc3.txt
RewriteRule ^abc4 abc4.txt
RewriteRule ^abc5 abc5.txt
RewriteRule ^abc6 abc6.txt
RewriteRule ^abc7 abc7.txt
RewriteRule ^abc8 abc8.txt
RewriteRule ^abc9 abc9.txt
RewriteRule ^abc10 abc10.txt
RewriteRule ^abc11 abc11.txt
RewriteRule ^abc12 abc12.txt


abc9.txt以降のファイル「 abc10.txt」「 abc11.txt」「 abc12.txt」を正しく表示させる方法はないでしょうか?
.htaccessで9以降の数字を認識させるオプションコマンドなどがあれば楽なのですが。

拡張子なしのファイルを拡張子付きのファイルに関連付けるための質問です。

以下のようにhtaccessを設定すると「abc10.txt」以降はすべて「abc1.txt」にリダイレクトしてしまいます。
ファイル名の数字は9までしか認識しないようです。
例えばリダイレクト先のファイル名を「abc10.txt」に指定すると1術しか認識せず「abc1.txt」を表示してしまいます。
「abc11.txt」も「abc12.txt」も同じく「abc1.txt」を表示してしまいます。

例1
http://sample.com/abc9 (拡張子なしのファイル指定)
表示:abc9.tx...続きを読む

Aベストアンサー

正規表現を勉強されると良いかと思います。

次のようにすると良いです。
RewriteRule ^abc1$ abc1.txt

^ は正規表現で頭にマッチするという意味です。
つまりは ^abc は abcから始まる文字列にマッチしろということですね。
これとは別に末尾にマッチする $ という正規表現があります。
abc $ であれば abcで終わる文字列にマッチするということです。
これを組み合わせて ^abc$ とすると abc で始まり abc で終わる文字列にマッチする。
つまりは abc のみを含む文字列にマッチするということになります。

正規表現は便利で、上のように全てのファイル名を書かなくとも次のように簡単に書くことができます。

RewriteEngine on
RewriteRule ^abc([0-9]{1,2})$ abc$1.txt

これは abc** というファイルの ** の部分が 0~99の場合です。

0~12 のようにしたい場合は次のようになります。

RewriteEngine on
RewriteRule ^abc([0-9]|1[0-2])$ abc$1.txt

正規表現を勉強するといろいろと便利なので余裕があるなら勉強すると良いですよ。

正規表現を勉強されると良いかと思います。

次のようにすると良いです。
RewriteRule ^abc1$ abc1.txt

^ は正規表現で頭にマッチするという意味です。
つまりは ^abc は abcから始まる文字列にマッチしろということですね。
これとは別に末尾にマッチする $ という正規表現があります。
abc $ であれば abcで終わる文字列にマッチするということです。
これを組み合わせて ^abc$ とすると abc で始まり abc で終わる文字列にマッチする。
つまりは abc のみを含む文字列にマッチするということになり...続きを読む

QリダイレクトでPOST

教えてください。

リダイレクトの際、POSTで次のページにデータを渡すことは可能でしょうか?

GETだと
header("Location: "a.php?no=".$no);
と、問題なくできるのですが、
できれば、パラメータを隠したいと思います。

以上ですが、よろしくお願いします。

Aベストアンサー

多分できないです。
それに、結局クライアント側に情報を送信しているのだから、POSTにしたところでパラメータを隠した事にはならないですし。
本当に隠すならサーバ側でセッション情報を引き継ぐような形にしないとダメでしょう。

AJAXのかたちにして、ページ遷移を見えなくするというのが手っ取り早いかも。

Qwgetでファイル名を指定してページを保存するには

wgetでページを保存したいのですが、ローカル側に保存するページ名を自分の好きな名前にしたいです。どうしたら良いでしょうか?

たとえば次のような感じです。
○リモートファイル名:「http:www.test.com/test_page.htm」
○ローカルファイル名:「hoge1.htm」

Aベストアンサー

-Oを付けて、
wget -O hoge1.htm http:www.test.com/test_page.htm

参考
http://www.google.co.jp/search?num=50&lr=lang_ja&ie=sjis&q=wget%20使い方

QHTMLフォームのSELECTの幅を一定にするためには?

HTMLフォームのSELECTの幅を一定にするためにはどのようにすれば
いいのでしょうか?

CSS等で設定できるとありがたいのですが、やり方がわかりません。

Aベストアンサー

<select style="width: 200px">

Qsyntax error, unexpected '}' というエラーの対処法

PHPを習い始めて三日目になるのですがParse error: syntax error, unexpected '}' in C:\Program Files\Apache Group\Apache2\htdocs\****\****\game.php on line 33
というエラーがでるのですが33行目前後のどこをなおせばいいのでしょうか?
・game.php
<html>
<head>
<title>数当てゲーム</title>
</head>
<body>
<h1 style="background:#cccccc">数当てゲーム</h1>
<form method="POST" action="game.php">
1~100までの数を入力してください
<input type="text" name="answer" size="5" maxlength="3" />
<input type="sbumit" value=回答" />
</form>
<hr />
<?php
session_start();
if(is_null($_SESSION['answer'])){
mt_stand(microtime()*1000000);
$_SESSION['answer']=mt_rand(1,100);
$_SESSION['game_cnt']=0;
}
if($_POST['answer']!=""){
$_SESSION['game_cnt']++;
if($_session['answer']==$_POST['answer']){
print("おめでとうございます".
$_SESSION['game_cnt']."回で正解しました!");
session_destroy();
}else{
if($_SESSION['answer']>$_POST['answer']){
print("もう少し大きいです。");
}else
print("もう少し小さいです。");
}
}
}
?>
</body>
</html>
それとこの間違えたところをなおしたあとはいつもコンピュータを再起動しないと修正したところが適用されないのですがほかに方法はないですか?基本的な質問ですいません。

PHPを習い始めて三日目になるのですがParse error: syntax error, unexpected '}' in C:\Program Files\Apache Group\Apache2\htdocs\****\****\game.php on line 33
というエラーがでるのですが33行目前後のどこをなおせばいいのでしょうか?
・game.php
<html>
<head>
<title>数当てゲーム</title>
</head>
<body>
<h1 style="background:#cccccc">数当てゲーム</h1>
<form method="POST" action="game.php">
1~100までの数を入力してください
<input type="text" name="answer" size="5" max...続きを読む

Aベストアンサー

print("もう少し大きいです。");
}else
print("もう少し小さいです。");
のelseの後に{がないようですが、大丈夫でしょうか?

Qテーブルの最後(最新)のレコードを抽出したい

宜しくお願いします。
PHP MYSQL の組み合わせで使っています

以下のようにして、最後のレコードを取り出したいのですが
まったく違う事をしているのかもしれません。

$sql =" select * from テーブル where フィールド='max' " ;

フィールドはauto_incrementで番号を振っています。
これで最大のつもりなのですが・・・。

他にも、レコードを入れた時間も記録したフィールドがあるのですが
どうしてよいか?判りません。

テーブルの最新のレコードを出したいのです。
**その中の一つのフィールドを取り出すのですが、
  それはうまくいっているみたいです 
  (max の所に数字を入れると表示します)

お手数かけますが、どなたかご教授お願いいたします。

Aベストアンサー

#2回答者です。

MySQL 4.1以前(サブクエリを使えない)なら、以下のような方法が考えられます。

select * from 表名
order by 列名 desc limit 1

QAjaxが動きません~『status=0』?

Ajaxを使うため、
web上のサンプルをとってきて実行してみたところ、動きません。

いろいろ調べてみたところ、
通常
 if(httpObj.status == 200)
などで使われるstatusが0になっていることが分かりました。

どこかで
 『ローカル上ではstatusは0になる』
という記述を見たのですが、Apache2.0.59が入っています。

Apacheが入っていてもstatusは0になるのでしょうか?

今回使用したサンプルは以下のサイトをのモノを貼り付けました。
http://www.openspc2.org/JavaScript/Ajax/Ajax_study/chapter02/004/index.html
その上で、
  if ((httpObj.readyState == 4) && (httpObj.status == 200))
  {
    displayData();
  } else {
    document.ajaxForm.result.value = httpObj.status;
  }
としました。


これで2日悩んでいるので、解決したいのです。
よろしくお願いいたします。

Ajaxを使うため、
web上のサンプルをとってきて実行してみたところ、動きません。

いろいろ調べてみたところ、
通常
 if(httpObj.status == 200)
などで使われるstatusが0になっていることが分かりました。

どこかで
 『ローカル上ではstatusは0になる』
という記述を見たのですが、Apache2.0.59が入っています。

Apacheが入っていてもstatusは0になるのでしょうか?

今回使用したサンプルは以下のサイトをのモノを貼り付けました。
http://www.openspc2.org/JavaScript/Ajax/Ajax_study/c...続きを読む

Aベストアンサー

> error.logにしか書き込みがないという時点で失敗なのがよく分かりました。
Apacheの起動に失敗してるのでは?

まさかとは思いますが、Apacheをインストールしただけで動いてないとか、使ってないとか、
そういうことはないですよね?
アクセスするアドレスってどうなってます?
ちゃんとhttp://localhost/~ または http://127.0.0.1/~としてますか?

> 『ローカル上ではstatusは0になる』
語弊のある書き方ですが、ウェブサーバーを使わずにファイルを読み込んだ場合、
つまり、file:///~のようなアドレスになる場合にstatusを受け取れません。
ローカルでもウェブサーバーを使っていればstatusコードを受け取れます。

蛇足になりますが
statusを見るだけだったらContent-typeは関係ないですよ。
ファイルが有れば200、エラーならそのエラーコードが入ります。
404 FileNotFoundとかのHTTP Status codeと同じですので。

>   if ((httpObj.readyState == 4) && (httpObj.status == 200))
>   {
>     displayData();
>   } else {
>     document.ajaxForm.result.value = httpObj.status;
>   }
この書き方では、else文はたぶん意味はないと思います。

readyStateの変遷を見るためなら

document.ajaxForm.result.value += httpObj.readyState + ', '+ httpObj.status + '\n';

、、、を、if文の前に書いた方がいいと思います。(たぶん動くと思うので)

> error.logにしか書き込みがないという時点で失敗なのがよく分かりました。
Apacheの起動に失敗してるのでは?

まさかとは思いますが、Apacheをインストールしただけで動いてないとか、使ってないとか、
そういうことはないですよね?
アクセスするアドレスってどうなってます?
ちゃんとhttp://localhost/~ または http://127.0.0.1/~としてますか?

> 『ローカル上ではstatusは0になる』
語弊のある書き方ですが、ウェブサーバーを使わずにファイルを読み込んだ場合、
つまり、file:///~のよ...続きを読む

Q文字列から、特定の文字を削除したい

アンケートで入力された値を受け取り、メールで送信しているのですが、受け取った値から、特定の文字列を削除することは可能でしょうか?

例えば電話番号の入力の場合、
03-xxxx-xxxx →03xxxxxxxx
077-xxx-xxxx →077xxxxxxx
のように、-(ハイフン)が入力されていたら、-を削除した文字列に置換してメール送信したいのです。
入力する時に、3つのテキストエリアに分けるのは諸事情でできないので、特定の文字を削除する関数か処理方法がありましたら、教えていただきたいです。
よろしくお願いします。

Aベストアンサー

str_replace
http://itbtech.itboost.co.jp/man/php_man/function.str-replace.html

<?php
$orig_telno = "03-xxxx-xxxx";

$telno = str_replace("-", "", $orig_telno);
echo $telno;

03xxxxxxxx

“PHP 文字列” あたりをキーワードに検索すれば
そんなに難しいものでもないような。


人気Q&Aランキング