Контактная форма 7 содержимое взорваться регулярными выражениями

У меня есть содержимое «Контактной формы 7», которое я получил из поста WP. Это выглядит примерно так:

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"',
)

У кого-нибудь есть идеи, как это сделать с помощью регулярных выражений или любым другим способом?
Спасибо 🙂

1

Решение

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

Попробуйте это. Захватите захват. См. Демонстрацию.

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);
2

Другие решения

Заметка: Извините за ответы на эту тему, созданные давно, но это наверняка поможет другим.

Большинство разработчиков при разработке задачи, связанной с 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;
}
}

Надеюсь, это поможет другим 🙂

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector