人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPの正規表現につきまして
定数__FILE__を使うと上手くいきません。
下記の変数から「aaaaa」を抜き出そうとしています。

変数$a="C:/xampp/htdocs/aaaaa/newfile.php";
変数$b=__FILE__;

変数$bと$aが同じ内容が表示される事も確認済みです。
どちらも同じ内容のはずですが、後者の時だけなぜか失敗します。
以下は正規表現で 「aaaaa」 を抜き出すコードです。
<?php
$a="C:/xampp/htdocs/aaaaa/newfile.php";
preg_match('#(?<=htdocs/).*?(?=/)#', $a, $test);
$test2=$test[0];
echo$test2;
?>
※このコードは正常に動作することを確認済みです。
しかし、変数$bでは上手くいきません。

わけがわかりません。


●質問者: ty2016
●カテゴリ:ウェブ制作
✍キーワード:ECHO PHP test XAMPP けが
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● ぱこち
●50ポイント

パスに「C:/」とあるので Windows ではないかと予測します。

「同じ内容が表示」と書かれていますが、同一の文字列なのではなく「同じ場所を示している」だけだったりしませんか。

Windows では __FILE__ に入っているパスはディレクトリ区切り文字が \ (バックスラッシュ) だったりします。

ですので、正規表現中でスラッシュが使われている場合、

$b = str_replace('\\', '/', $b);

のように、バックスラッシュをスラッシュに変えないと、引っかからないと思います。

◎質問者からの返答

ご回答ありがとう御座います。

無事、解決いたしました。


2 ● deflation
●50ポイント ベストアンサー

おそらくWindowsをご利用でしょうから、__FILE__ に代入されるディレクトリのセパレータは¥(円マーク/バックスラッシュ)になります。

そこで、preg_matchを下記のように修正してください。


preg_match("#(?<=htdocs[/\\\]).*?(?=[/\\\])#", $a, $test);
◎質問者からの返答

ご回答ありがとう御座います。

無事、解決いたしました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ