在 PHP 中提取方括号内的文本
在 PHP 中捕获方括号之间的文本的挑战需要采取细致入微的方法。使用 /[.*?]/ 作为正则表达式的常见尝试仅检索第一个实例,导致结果不完整。
捕获外壳:
要克服此限制,请使用将整个文本包含在方括号内的正则表达式。考虑以下模式:
$text = '[This] is a [test] string, [eat] my [shorts].'; preg_match_all("/\[[^\]]*\]/", $text, $matches);
这里, /[1]/ 用作正则表达式,对应于方括号中包含的任何字符串。插入符号 (^) 与字符串的开头匹配,后跟括号。 2 部分表示不是括号的字符。星号 () 匹配任意数量的出现,尾部括号结束该模式。
在提供的文本上运行此正则表达式将导致:
Array ( [0] => [This] [1] => [test] [2] => [eat] [3] => [shorts] )
捕获内部文本:
或者,您可能希望提取文本而不使用括号。这需要修改正则表达式:
$text = '[This] is a [test] string, [eat] my [shorts].'; preg_match_all("/\[([^\]]*)\]/", $text, $matches);
在此正则表达式中,(3*) 捕获方括号内的任何字符,从而有效地从输出中删除括号。您将获得:
Array ( [0] => This [1] => test [2] => eat [3] => shorts )
请记住,此正则表达式假定方括号未嵌套在文本中。
以上是如何使用 PHP 正则表达式提取方括号中的文本?的详细内容。更多信息请关注PHP中文网其他相关文章!