Contact Form 7 content explode by regular expressions

I have a contents of ‘Contact Form 7’ that I got from WP post. It looks something like this:

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

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

Subject
[text your-subject]

Your Message
[textarea your-message]

[submit "Send"]

I need to explode this content to an array by regular expressions. At the end of the process it should look like this:

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

Does anyone have an idea how to do it by using regular expressions or any other way?
Thanks 🙂

Related posts

Leave a Reply

2 comments

  1. (?<=[)([^]]+)
    

    Try this.Grab the capture.See demo.

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

    $re = ""(?<=\[)([^\]]+)"";
    $str = "Your Name (required)n[text* your-name]nnYour Email (required)n[email* your-email]nnSubjectn[text your-subject]nnYour Messagen[textarea your-message]nn[submit "Send"]";
    
    preg_match_all($re, $str, $matches);
    
  2. Note: Sorry for Answering to this thread generated a long ago, but this will help other surely.

    Most of developer while developing a task related to the CF7, they need the type and name of the fields, but generally they failed to grab as the form is stored as a content due to custom post type.

    So to fetch type, name, basetype, etc… you need to fetch all contact form post.
    You need to loop through every contact form post and pass the content of the form in below scan function as a agument

        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;
          }
       }
    

    Hope this help others 🙂