联系表单7内容通过正则表达式爆炸

时间:2014-11-23 15:19:07

标签: php regex wordpress contact-form contact-form-7

我从WP帖子中获得了“联系表格7”的内容。它看起来像这样:

Your Name (required)
[text* your-name]

Your Email (required)
[email* your-email]

Subject
[text your-subject]

Your Message
[textarea your-message]

[submit "Send"]

我需要通过正则表达式将此内容分解为数组。在过程结束时,它应该如下所示:

$arr = array ( 
'text* your-name',
'email* your-email',
'text your-subject',
'textarea your-message',
'submit "Send"',
)

有没有人知道如何使用正则表达式或其他任何方式来做到这一点? 谢谢:))

2 个答案:

答案 0 :(得分:2)

(?<=\[)([^\]]+)

试试这个。抓住捕获。参见演示。

http://regex101.com/r/yP3iB0/8

$re = ""(?<=\\[)([^\\]]+)"";
$str = "Your Name (required)\n[text* your-name]\n\nYour Email (required)\n[email* your-email]\n\nSubject\n[text your-subject]\n\nYour Message\n[textarea your-message]\n\n[submit \"Send\"]";

preg_match_all($re, $str, $matches);

答案 1 :(得分:0)

  

注意很抱歉回答很久以前生成的该线程,但这肯定会对其他人有所帮助。

大多数开发人员在开发与CF7相关的任务时,都需要字段的类型和名称,但是通常由于自定义帖子类型而无法将表单存储为内容,因此他们无法抓取。

因此要获取类型,名称,基本类型等,您需要获取所有联系表。 您需要遍历每个联系表单帖子,并在下面的扫描功能中将表单内容作为参数传递

    foreach($form as $objForm){
     $manager = WPCF7_FormTagsManager::get_instance();
     $tags  = $manager->scan( $objForm->form );
     $filter_result = $manager->filter( $tags, $cond );
      foreach ($filter_result as $key => $value) {
          echo $value->type;
          echo $value->name;
      }
   }

希望这对其他人有帮助:)