如何在 PHP 中使用预匹配获取两个常量之间的字符串
How to get string between two constants using preg match in PHP
$content = 'blah [faq] blag blag blag [/faq] blah';
preg_match("%\[faq\].*\[/faq\]%i", $content, $matches);
print_r($matches);
我知道我的正则表达式在这里有问题,因为它不起作用。我想要 matches[0]
到 return blag blag blag
.
你的问题可以用这个解决。
$content = 'blah [faq] blag blag blag [/faq] blah';
preg_match("%\[faq\](.*?)\[/faq\]%i", $content, $matches);
print_r($matches[1]);
我们再添加一个匹配项并获得索引 1。索引 0 是完全匹配模式,索引 1 是 (.*?) 中问号的第二个匹配项
你的代码基本上是正确的,除了你应该提供一个捕获组来捕获标签之间的内容。然后,访问 $matches[1]
中捕获的内容,而不是 $matches[0]
,后者将包含整个匹配项。
\[faq\](.*?)\[/faq\]
更新脚本:
$content = 'blah [faq] blag blag blag [/faq] blah';
preg_match("/\[faq\](.*?)\[\/faq\]/", $content, $matches);
echo $matches[1];
这会打印:
blag blag blag
注意:我将分隔符从 %
切换为 /
,这更典型。
$content = 'blah [faq] blag blag blag [/faq] blah';
preg_match("%\[faq\].*\[/faq\]%i", $content, $matches);
print_r($matches);
我知道我的正则表达式在这里有问题,因为它不起作用。我想要 matches[0]
到 return blag blag blag
.
你的问题可以用这个解决。
$content = 'blah [faq] blag blag blag [/faq] blah';
preg_match("%\[faq\](.*?)\[/faq\]%i", $content, $matches);
print_r($matches[1]);
我们再添加一个匹配项并获得索引 1。索引 0 是完全匹配模式,索引 1 是 (.*?) 中问号的第二个匹配项
你的代码基本上是正确的,除了你应该提供一个捕获组来捕获标签之间的内容。然后,访问 $matches[1]
中捕获的内容,而不是 $matches[0]
,后者将包含整个匹配项。
\[faq\](.*?)\[/faq\]
更新脚本:
$content = 'blah [faq] blag blag blag [/faq] blah';
preg_match("/\[faq\](.*?)\[\/faq\]/", $content, $matches);
echo $matches[1];
这会打印:
blag blag blag
注意:我将分隔符从 %
切换为 /
,这更典型。