Я создаю «базу данных котировок» для телешоу, которым я являюсь поклонником, и я переписываю его части, которые мне не особенно нравятся. Я наткнулся на свою функцию, чтобы проанализировать данные, содержащие цитату и символы, в массив, который я могу легко прокрутить и отобразить. Одна из особенностей сайта заключается в том, что у вас может быть одна цитата (однострочный) или разговор между несколькими символами. Прямо сейчас я храню одинарные кавычки следующим образом:Анализ данных в массиве
[charactername] Это мой остроумный однострочный.
И разговоры по той же схеме:
[characternameone] Как погода?
[characternametwo] Довольно хорошо, на самом деле.
И так далее. Вот вышеупомянутая функция синтаксического анализа:
function parse_quote($text)
{
// Determine if it's a single or convo
if (strpos($text, "\n") != false)
{
// Convo
// Let's explode into the separate characters/lines
$text = explode("\n", $text);
$convo = array();
// Parse each line into character and line
foreach ($text as $part)
{
$character = substr($part, 1, strpos($part, ']') - 1);
$line = substr($part, strlen($character) + 2);
$convo[] = array(
'character' => $character,
'line' => $line
);
}
return array(
'type' => 'convo',
'quote' => $convo
);
}
else
{
// Single
// Parse line into character and line
return array(
'type' => 'single',
'quote' => array(
'character' => substr($text, 1, strpos($text, ']') - 1),
'line' => substr($text, strlen(substr($text, 1, strpos($text, ']') - 1)) + 2)
)
);
}
}
Он работает, как ожидалось, но я не могу помочь, но думаю, что есть лучший способ сделать это. Я ужасен с регулярными выражениями, которые, как я полагаю, придут, по крайней мере, в этой ситуации. Любые советы или улучшения?
Да, используйте базу данных :) SQLite может быть –
'$ text' поступает из базы данных; вот как он хранится. Как мне улучшить это? Возможно, я должен сериализовать предмет перед его хранением? –
Ну, вы не упомянули об этом, поэтому я догадался, что «плоский файл» означает именно так. Улучшение? Используйте столбец (в таблице, связанной с цитатой) для имени символа, поэтому вам не нужно разбирать что-либо, а просто используйте выделение на правильно проиндексированных столбцах. Путь проще и удобнее. –