Страница 1 из 1

Помогите с регуляркой

Добавлено: 2013.11.16, 17:30
kawabanga
Надо отделить превью от основной статьи, следующего вида:

"Это текст, отображающийся в предпросмотре статьи <preview> А этот текст должен вырезаться"

Я должен получить два значения:
a) "Это текст, отображающийся в предпросмотре статьи"
b) "Это текст, отображающийся в предпросмотре статьи А этот текст должен вырезаться"


какие паттерны в preg_replace соответствуют заданным значениям?

Re: Помогите с регуляркой

Добавлено: 2013.11.16, 18:09
Loki
Если нужны именно регулярки – то примерно так:
http://regex101.com/r/rV1dL6

Re: Помогите с регуляркой

Добавлено: 2013.11.16, 18:20
kawabanga
Во, замечательно, спасибо!)

Re: Помогите с регуляркой

Добавлено: 2013.11.16, 19:36
kawabanga
Не все замечательно....(
http://regex101.com/r/xN3uP7 а если использовать такую строку?

Re: Помогите с регуляркой

Добавлено: 2013.11.17, 09:49
Loki
http://regex101.com/r/iJ3eB1
Такой вариант.
Вообще, возможно стоит посмотреть в сторону использования strpos + substr.

Re: Помогите с регуляркой

Добавлено: 2013.11.17, 14:00
samdark

Код: Выделить всё

class Text {
    /**
     * Cuts text after <preview> mark
     *
     * @param string $text
     * @param string $more_link
     * @return string
     */
    static function cut($text, $more_link) {
        $text = explode('<preview>', $text, 2);
        return empty($text[1]) ? $text[0] : $text[0]."\n$more_link";
    }

    /**
     * Removes <preview> mark from the text
     *
     * @param string $text
     * @return string
     */
    static function hideCut($text) {
        return str_replace('<preview>', '', $text);
    }
 

Re: Помогите с регуляркой

Добавлено: 2013.12.01, 16:22
kawabanga
Sam Dark, спасибо!

А подскажите пожалуйста еще, я так понимаю в rules необходимо поставить проверку текста по паттерну? какой паттерн должен подойти под многострочный текст вида , "Много текста <preview> продолжение статьи"

Код: Выделить всё

array('content', 'match', 'pattern'=>'паттерн',
                'message'=>'Вы должны указать метку <preview> для Превью страницы'),
UPD: справился вот так:

Код: Выделить всё

array('content', 'match', 'pattern'=>'<preview>',
                'message'=>'Вы должны указать метку <preview> для Превью страницы'),