Поиск данных после строкового заголовка в PHP - PullRequest
0 голосов
/ 22 декабря 2011

Я пытаюсь получить сценарии для поиска в $ open_email_msg, в которых разные электронные письма будут иметь разную информацию, но в том же формате, что и ниже.Я просто хочу, чтобы все, что они ставили после Title: или Tags: или Categories: что бы ни собирались эти данные, а не строка «Title:» или «Tags:» или «Categories:» Это всего лишь фрагмент всего кода,остальные вставляют информацию в таблицу MySQL и затем публикуются в новостной статье на сайте.

Может кто-нибудь помочь мне найти решение этой проблемы, пожалуйста?

Строгий формат сообщения электронной почты:

Обновление новостей
Название: Заголовок статьи
Теги: tag1 tag2
Категории: Категория статьи, 2-я категория статьи
Фрагмент: Фрагмент статьи.
Сообщение:Статья Сообщение.Изображений.Больше текста, больше текста.Lorem impsum dolor sit amet.

<?php
//These functions searches the open e-mail for the the prefix defining strings.
    //Need a function to search after the space after the strings because the subject, categories, snippet, tags and message are constant-changing.
$subject = strpos($open_email_msg, "Title:");       //Searches the open e-mail for the string "Title" 
$categories = strpos($open_email_msg, "Categories:");       //Searches the open e-mail for the string "Categories"
$snippet = strpos($open_email_msg,"Snippet");           //Searches the open e-mail for the string "Snippet"
$content = strpos($open_email_msg, "Message");  //Searches the open-email for the string "Message"
$tags = str_replace(' ',',',$subject); //DDIE
$uri =  str_replace(' ','-',$subject); //DDIE
$when = strtotime("now");   //date article was posted

?>

Ответы [ 2 ]

1 голос
/ 22 декабря 2011

Попробуйте это:

<code>preg_match_all('/([^:\\s]+): (.+)/', $open_email_msg, $matches, PREG_SET_ORDER);

echo '<pre>' . print_r($matches, 1) . '
';
0 голосов
/ 22 декабря 2011

Попробуйте это:

$lines = explode("\r\n", $open_email_msg); // Replace with whatever the line separator is
foreach($lines as $line){
    $temp = explode(": ", $line, 2);
    $msg[$temp[0]] = $temp[1];
}
// Now we have an array like
array(
    "Title" => "Article Title",
    "Tags" => "tag1 tag2",
    "Categories" => "Article Category, 2nd Article Category",
    "Snippet" => "Article Snippet",
    "Message" => "..."
)
...