使用正则表达式匹配短代码中的字符串

时间:2017-04-29 08:10:40

标签: php regex

我在Wordpress的页面内容中有这个短代码。我需要获得“layout”的值以及“slug”的值

所以我需要价值观: list&飞机从字符串中提取

我正在寻找尽可能低的性能。我试图从save_post钩子获取这些值,所以我无法访问正常的短代码$ atts参数。

'[vc_row][vc_column width="2/3"]

[cpt_categories layout="listing" view="grid" items_per_row="4" orderby="title" order="ASC" slug="aircraft"]

[/vc_column][vc_column width="1/3"][/vc_column][/vc_row]'

当使用原生WP功能shortcode_parse_atts时,我接近但有一些问题:

$atts = shortcode_parse_atts($post->post_content);
var_dump($atts);
array 
  0 =>  '[vc_row][vc_column' 
  1 =>  'width="2/3"][cpt_categories' 
  'layout' =>  'listing' 
  'view'   =>  'grid' 
  'items_per_row' =>  '4' 
  'orderby' =>  'title' 
  'order' =>  'ASC' 
  2 =>  'slug="aircraft"][/vc_column][vc_column' 
  3 =>  'width="1/3"][/vc_column][/vc_row]' 

1 个答案:

答案 0 :(得分:1)

如果这两个值完全符合您的要求,那么Regex可能是一个合理的解决方案。 (只需注意整个"锤子和钉子"正则表达式和HTML)

layout="([^"]*)"中的第1组匹配将为您提供列表值。

slug="([^"]*)"中的第1组匹配将为您提供飞机值。

它们都适用于您的示例字符串(在https://regex101.com/处测试过)。