文字列を取得しようとしていますhello world
。
これは私がこれまでに得たものです:
$file = "1232#hello world#";
preg_match("#1232\#(.*)\##", $file, $match)
文字列を取得しようとしていますhello world
。
これは私がこれまでに得たものです:
$file = "1232#hello world#";
preg_match("#1232\#(.*)\##", $file, $match)
#
文字列に が含まれているため、#
以外の区切り記号を使用することをお勧めし(.*?)
ます#
。なお、#
デリミタでもなければ式中でエスケープする必要はありません。
$file = "1232#hello world#";
preg_match('/1232#(.*?)#/', $file, $match);
var_dump($match);
// Prints:
array(2) {
[0]=>
string(17) "1232#hello world#"
[1]=>
string(11) "hello world"
}
次[^#]+
の. _ _*
+
#
preg_match('/1232#([^#]+)#/', $file, $match);
ルックアラウンドを使用します。
preg_match("/(?<=#).*?(?=#)/", $file, $match)
preg_match("/(?<=#).*?(?=#)/", "1232#hello world#", $match);
print_r($match)
Array
(
[0] => hello world
)
ここでテストします。
あなたが取得する必要があるように私には見えます$match[1]
:
php > $file = "1232#hello world#";
php > preg_match("/1232\\#(.*)\\#/", $file, $match);
php > print_r($match);
Array
(
[0] => 1232#hello world#
[1] => hello world
)
php > print_r($match[1]);
hello world
異なる結果を得ていますか?
preg_match('/1232#(.*)#$/', $file, $match);