Я создаю «базу данных цитат» для телешоу, фанатом которого я являюсь, и переписываю части, которые мне не особенно нравятся. Я наткнулся на свою функцию для анализа данных, содержащих кавычки и символы, в массив, который я могу легко просмотреть и отобразить. Одной из особенностей сайта является то, что вы можете иметь одинарную цитату (однострочник) или разговор между несколькими персонажами. Прямо сейчас я храню одинарные кавычки так:
[имя_символа] Это моя остроумная строчка.
И разговоры идут по той же схеме:
[характерное имя] Как погода?
[Charactersametwo] Довольно хорошо, на самом деле.
И так далее. Вот вышеупомянутая функция разбора:
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)
)
);
}
}
Это работает, как и ожидалось, но я не могу не думать, что есть лучший способ сделать это. Я ужасен с регулярными выражениями, которые, я полагаю, пригодятся в этой ситуации, по крайней мере, несколько удобно Любой совет или улучшения?