Как я могу отрезать описание RSS-канала после 2 предложений, используя preg_split? - PullRequest
1 голос
/ 27 ноября 2008

Я хочу взять описание RSS-канала, расположенного в $ the_content, и обрезать его после 2 полных предложений (или 200 слов, а затем следующего полного предложения), используя preg_split.

Я пытался пару раз, но я далеко. Я знаю, что я хочу сделать, но я не могу даже начать что-то делать, чтобы заставить эту работу.

Спасибо!

1 Ответ

1 голос
/ 27 ноября 2008

Правильное разбиение HTML очень сложно, и не стоит делать с регулярными выражениями. Если вам нужен HTML, вам пригодится что-то вроде DOM-текстовый итератор .

  1. Преобразовать описание в текст:

    $text = html_entities_decode(strip_tags($html),ENT_QUOTES,'UTF-8');
    
  2. Это займет первые 200 символов (200 слов - это слишком много для предложения, не так ли?), А затем искать конец предложения:

    $text = preg_replace('/^(.{200}.*?[.!?]).*$/','\1',$text);
    

Вы можете изменить [.!?] на что-то более сложное, например, требует пробела после пунктуации или требует, чтобы рядом не было знаков препинания:

  (?<![^.!?]{5})[.!?](?=[^.!?]{5})

(?=…) - положительное утверждение. (?<!…) отрицательное утверждение, которое выглядит позади текущей позиции. {5} означает 5 раз.

Я не проверял:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...