Страница 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> для Превью страницы'),