• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

PHP - Wyrażenie regularne opisujące zdanie

Object Storage Arubacloud
0 głosów
497 wizyt
pytanie zadane 11 października 2019 w PHP przez kingkushlee Gaduła (3,960 p.)
Witam,

Chciałbym rozdzielić newsa na blogu do tablicy po kropkach, jednak występują tam takie skróty, jak:

wg. , 1. , 3. etc.

Jak wyglądałby regex, którego mógłbym użyć do wykonania preg_split() na wiadomości? Z góry dziękuję za pomoc.

2 odpowiedzi

0 głosów
odpowiedź 11 października 2019 przez Tomek Sochacki Ekspert (227,510 p.)
Musiałbyś zrobić całe mnóstwo alternatyw, uwzględniając również skróty, które tej kropki teoretycznie nie powinny mieć, ale zdarzają się blędy gdzie je mają... teoretycznie jest to do zrobienia, ale obawiam się, że taki regexp będzie cieżki w utrzymaniu i mało elastyczny...

A do czego w ogóle to potrzebujesz i jakie masz te przykładowe stringi? Pytam, bo może problem da się rozwiązać w jakiś zupełnie inny sposób, bardziej uniwersalny?
komentarz 11 października 2019 przez kingkushlee Gaduła (3,960 p.)
Chodzi mi o system bloga. Mam treść wpisu i chciałbym wyświetlić np 5 zdań i potem dodać link "Czytaj więcej" z przekierowaniem do wpisu blogowego.
1
komentarz 11 października 2019 przez Tomek Sochacki Ekspert (227,510 p.)
A dlaczego nie np. 500 pierwszych znakow? W takim podejsciu masz większą kontrolę na UX, a przy zdaniach może Ci się to rozjezdzac.
0 głosów
odpowiedź 12 października 2019 przez Chess Szeryf (76,710 p.)
.prop1 {
  background: orange;
}
<body style="background-color: gray;">
<?php

$keywords = preg_match_all("@(?:.|\n)+?\.|(?:.|\n)+?$@"
, "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent varius pharetra nunc, ac dictum eros pellentesque eu. Morbi lobortis lectus leo. Aliquam sit amet luctus nunc. Nullam molestie ante sed dui aliquam imperdiet. Proin pellentesque ac orci ac ultricies. Etiam elementum ultrices erat, a placerat enim sodales at. Nulla suscipit eros a arcu euismod facilisis. Praesent sollicitudin odio et lobortis sodales. Aenean vulputate arcu eget ante aliquam, sed rhoncus lorem tempus. Nulla massa eros, cursus et ligula quis, scelerisque interdum tortor. Morbi efficitur orci porta, suscipit urna ac, euismod quam. Sed suscipit sem a mi feugiat, vel molestie lacus efficitur.

Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Sed at tortor tempus, finibus augue ornare, vehicula nisi. Praesent finibus nunc lorem, ac vestibulum nibh aliquet ut. Cras placerat efficitur magna ac cursus. Sed iaculis eros a finibus consequat. Quisque nunc tellus, aliquam vel mauris non, sodales ultrices nunc. Sed vel fringilla tellus.", $matches);

$len = 0;
$line_to_display = 0;
define('length_of_txt', 65);

for($i=0;$i<count($matches[0]);$i++) {
  if($len >= length_of_txt) {
    $line_to_display = $i;
    break;
  } else {
    $len += strlen($matches[0][$i]);
  }
}


if($_GET['expand'] == 'true') {
  echo "<div class='prop1'>";
  for($i=0;$i<$line_to_display;$i++) {
    echo $matches[0][$i];
  }
  echo "(...)";
  echo "</div>";
  echo "<form method='get' action=''>";
  echo "<input type='submit' value='expand' name='expand'/>";
  echo "<input type='hidden' value='false' name='expand'/>";
  echo "</form>";
} else {
  echo "<div class='prop1'>";
  for($i=0;$i<count($matches[0]);$i++) {
    echo $matches[0][$i];
  }
  echo "</div>";
  echo "<form method='get' action=''>";
  echo "<input type='submit' value='fold' name='expand'/>";
  echo "<input type='hidden' value='true' name='expand'/>";
  echo "</form>";
}

?>
</body>
(?!\.)(?:.|\n)+?(?=\.)|(?!\.)(?:.|\n)+?$

wikipedia.org - szukanie końca zdania

Jeśli chcesz, żeby było po zdaniach, to można by napisać na końcu każdego zdania non-printable znak, który później służyłby do określenia, w której części tekstu jest zdanie i na tej podstawie przełamywałoby/wyciągałoby się zdania w bardzo prosty sposób chociażby instrukcją split.
 

Podobne pytania

0 głosów
0 odpowiedzi 113 wizyt
pytanie zadane 16 grudnia 2019 w PHP przez mi-20 Stary wyjadacz (13,190 p.)
0 głosów
2 odpowiedzi 250 wizyt
0 głosów
2 odpowiedzi 242 wizyt
pytanie zadane 7 stycznia 2021 w Inne języki przez Gucci Gaduła (4,580 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...