我需要 preg_match_all() 模式来获取方括号标签内的字符串 PHP
I need preg_match_all() pattern in getting string inside square bracket tags PHP
我想解析一个字符串以获取方括号标记内的值:
[vc_column_text][/vc_column_text]
我在 PHP
中使用 preg_match_all()
$string = '[vc_row][vc_column][/vc_column][/vc_row][vc_row][vc_column width="1/2"][vc_column_text css=".vc_custom_1576642149231{margin-bottom: 0px !important;}"]This is the string I want to fetch[/vc_column_text][/vc_column][/vc_row]`;
我试过这个:
preg_match_all("'[vc_column_text(.*?)](.*?)[/vc_column_text]'", $string, $matches);
但这只是 returns 2-3 个字符的数组:
非常感谢您的帮助:)
如果只想匹配句子,可以先匹配 [vc_column_text
后跟除 [
或 ]
之外的任何字符,然后匹配结尾的 ]
然后匹配 0+ 次出现的空白字符,并捕获 1 次或多次出现的除第 1 组中的空白以外的任何字符。
\[vc_column_text[^][]*\]\s*(.+?)\[/vc_column_text]
说明
\[vc_column_text
匹配 [vc_column_text
[^][]*\]
匹配 [
,然后除 [
或 ]
之外的任何字符出现 0+ 次并匹配 ]
\s*
匹配 0+ 个空白字符
(.+?)
捕获组 1,匹配任何字符 1+ 次非贪婪
\[/vc_column_text]
匹配 [/vc_column_text]
示例代码
$string = '[vc_row][vc_column][/vc_column][/vc_row][vc_row][vc_column width="1/2"][vc_column_text css=".vc_custom_1576642149231{margin-bottom: 0px !important;}"]This is the string I want to fetch[/vc_column_text][/vc_column][/vc_row]';
preg_match_all("~\[vc_column_text[^][]*\]\s*(.+?)\[/vc_column_text]~", $string, $matches);
print_r($matches[1]);
输出
Array
(
[0] => This is the string I want to fetch
)
我想解析一个字符串以获取方括号标记内的值:
[vc_column_text][/vc_column_text]
我在 PHP
中使用preg_match_all()
$string = '[vc_row][vc_column][/vc_column][/vc_row][vc_row][vc_column width="1/2"][vc_column_text css=".vc_custom_1576642149231{margin-bottom: 0px !important;}"]This is the string I want to fetch[/vc_column_text][/vc_column][/vc_row]`;
我试过这个:
preg_match_all("'[vc_column_text(.*?)](.*?)[/vc_column_text]'", $string, $matches);
但这只是 returns 2-3 个字符的数组:
非常感谢您的帮助:)
如果只想匹配句子,可以先匹配 [vc_column_text
后跟除 [
或 ]
之外的任何字符,然后匹配结尾的 ]
然后匹配 0+ 次出现的空白字符,并捕获 1 次或多次出现的除第 1 组中的空白以外的任何字符。
\[vc_column_text[^][]*\]\s*(.+?)\[/vc_column_text]
说明
\[vc_column_text
匹配[vc_column_text
[^][]*\]
匹配[
,然后除[
或]
之外的任何字符出现 0+ 次并匹配]
\s*
匹配 0+ 个空白字符(.+?)
捕获组 1,匹配任何字符 1+ 次非贪婪\[/vc_column_text]
匹配[/vc_column_text]
示例代码
$string = '[vc_row][vc_column][/vc_column][/vc_row][vc_row][vc_column width="1/2"][vc_column_text css=".vc_custom_1576642149231{margin-bottom: 0px !important;}"]This is the string I want to fetch[/vc_column_text][/vc_column][/vc_row]';
preg_match_all("~\[vc_column_text[^][]*\]\s*(.+?)\[/vc_column_text]~", $string, $matches);
print_r($matches[1]);
输出
Array
(
[0] => This is the string I want to fetch
)