【发布时间】:2021-01-22 15:35:33
【问题描述】:
$input="[youtube id=HmV4gXIkP6k]";
preg_match_all("~[(.+?)]~",$input,$output);
var_dump($output);
如何在 [ ] 中获取字符串?
【问题讨论】:
-
这应该有助于
(?<=\[).*?(?=\]) -
你需要用双反斜杠转义方括号
$input="[youtube id=HmV4gXIkP6k]";
preg_match_all("~[(.+?)]~",$input,$output);
var_dump($output);
如何在 [ ] 中获取字符串?
【问题讨论】:
(?<=\[).*?(?=\])
你也可以不使用正则表达式:
$Index1 = strpos($input, '[');
$Index2 = strpos($input, ']');
$Result = substr($input, $Index1+1, $Index2-$Index1-1);
【讨论】:
你需要用反斜杠转义方括号,因为反斜杠也是PHP字符串文字的转义字符,你也需要转义反斜杠:
$input="[youtube id=HmV4gXIkP6k]";
preg_match_all("~\\[(.+?)\\]~",$input,$output);
var_dump($output);
输出:
array(2) {
[0]=>array(1) {
[0]=>string(24) "[youtube id=HmV4gXIkP6k]"
}
[1]=>array(1) {
[0]=>string(22) "youtube id=HmV4gXIkP6k"
}
}
【讨论】:
"~\\[(.+?)\\]~" 和 "~\[(.+?)\]~" 和 "~\[(.+?)]~" 在 PHP 中定义相等的正则表达式模式。