фильтровать переменную php для конкретной строки bbcode - совпадать с переносом внутри div? - PullRequest
1 голос
/ 29 марта 2011

Привет, ребята, моя переменная php $ content содержит html!я хочу отфильтровать этот $ контент для

[q=SomeQuestoin] и [a=SomeAnswer]

и обернуть каждое совпадение в div.question и div.answer.

Так что всякий раз, когдаэта [q=Some Question][a=Some Answer] структура найдена в $ content, я хочу это выпустить.

<div class="qanda">
    <div class="question">
        Some Question
    </div>

    <div class="answer">
        Some Answer
    </div>  
</div>

Возможно ли это?Важно то, что текст Quration или текст ответа может также содержать HTML-теги.как <p> или <b> и т. д.

обновление:

    $q_regex = '/\[q=([^"]+?)]/is'; 
    $q_output = '<div class="qanda"><div class="queston">$1</div>'; 
    $content = preg_replace($q_regex, $q_output, $content);

    $a_regex = '/\[a=([^"]+?)]/is'; 
    $a_output = '<div class="answer">$1</div></div>'; 
    $content = preg_replace($a_regex, $a_output, $content);

1 Ответ

0 голосов
/ 29 марта 2011

http://www.spotlesswebdesign.com/blog.php?id=12

учебник по использованию регулярных выражений для анализа bbcode. Однако люди рекомендуют использовать модуль синтаксического анализа bbcode. должно быть безопасно для регулярных выражений, так как вы не используете вложенность и еще много чего.

EDIT

возможно, но сложно. может быть подвержен ошибкам. что-то вроде этого может быть:

$result = preg_replace('/\[q=(.+?)].+?\[a=(.+?)]/is', '<div class="qanda"><div class="question">$1</div><div class="answer">$2</div></div>', $subject);
...