定数__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では上手くいきません。
わけがわかりません。
おそらくWindowsをご利用でしょうから、__FILE__ に代入されるディレクトリのセパレータは¥(円マーク/バックスラッシュ)になります。
そこで、preg_matchを下記のように修正してください。
preg_match("#(?<=htdocs[/\\\]).*?(?=[/\\\])#", $a, $test);
パスに「C:/」とあるので Windows ではないかと予測します。
「同じ内容が表示」と書かれていますが、同一の文字列なのではなく「同じ場所を示している」だけだったりしませんか。
Windows では __FILE__ に入っているパスはディレクトリ区切り文字が \ (バックスラッシュ) だったりします。
ですので、正規表現中でスラッシュが使われている場合、
$b = str_replace('\\', '/', $b);
のように、バックスラッシュをスラッシュに変えないと、引っかからないと思います。
ご回答ありがとう御座います。
無事、解決いたしました。
おそらくWindowsをご利用でしょうから、__FILE__ に代入されるディレクトリのセパレータは¥(円マーク/バックスラッシュ)になります。
そこで、preg_matchを下記のように修正してください。
preg_match("#(?<=htdocs[/\\\]).*?(?=[/\\\])#", $a, $test);
ご回答ありがとう御座います。
無事、解決いたしました。
ご回答ありがとう御座います。
無事、解決いたしました。