18

文字列を取得しようとしていますhello world

これは私がこれまでに得たものです:

$file = "1232#hello world#";

preg_match("#1232\#(.*)\##", $file, $match)
4

5 に答える 5

29

#文字列に が含まれているため、#以外の区切り記号を使用することをお勧めし(.*?)ます#。なお、#デリミタでもなければ式中でエスケープする必要はありません。

$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);
于 2012-11-26T02:34:23.093 に答える
14

ルックアラウンドを使用します。

preg_match("/(?<=#).*?(?=#)/", $file, $match)

デモ:

preg_match("/(?<=#).*?(?=#)/", "1232#hello world#", $match);
print_r($match)

出力:

Array
(
    [0] => hello world
)

ここでテストします

于 2012-11-26T02:49:17.197 に答える
0

あなたが取得する必要があるように私には見えます$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

異なる結果を得ていますか?

于 2012-11-26T02:38:20.367 に答える
0
preg_match('/1232#(.*)#$/', $file, $match);
于 2012-11-26T02:39:55.590 に答える