2011-12-22 1 views
0

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

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

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

Новости Обновление
Название: Заголовок
Теги: tag1 tag2
Категории: Статья Категория, вторая статьи Категория
Отрывок: Статья сниппет.
Сообщение: Статья Сообщение. Изображений. Больше текста, больше текста. Lorem impsum dolor сидит 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 

?> 
+0

Если это строгий формат, вы не можете просто разделить на переводы строк и идти оттуда? – jprofitt

ответ

0

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

$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" => "..." 
) 
+0

Что вы подразумеваете под разделителем строк? –

+0

Я использовал это, и все, что он дал мне, всегда было словом Array, где должна была быть дата. почему это? –

1

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

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

echo '<pre>' . print_r($matches, 1) . '</pre>';