Kivonatok készítése PHP-ben vagy WordPress-ben: szó-, mondat- és bekezdésszámlálási technikák
Kivonatok készítése a PHP gyakori feladat a tartalomkezelésben és a weboldalfejlesztésben. A kivonat egy hosszabb tartalom rövidített változata, amelyet gyakran előnézet vagy összefoglaló biztosítására használnak. Előfordulhat, hogy a PHP-fejlesztőknek kivonatokat kell készíteniük a szavak, mondatok vagy bekezdések száma alapján. Ez a cikk megvizsgálja ennek elérésére szolgáló módszereket, valamint a bevált gyakorlatokat és az olyan esetek kezelését, amikor a számok száma meghaladja a tartalom hosszát.
Részlet a Szószámlálástól
A kivonat szószám alapján történő létrehozása magában foglalja a tartalom csonkolását bizonyos számú szó után.
function excerptByWordCount($content, $wordCount) {
$words = explode(' ', $content);
if (count($words) > $wordCount) {
$words = array_slice($words, 0, $wordCount);
$content = implode(' ', $words);
}
return $content;
}
Használat:
// Excerpt of first 50 words
$wordCountExcerpt = excerptByWordCount($originalContent, 50);
A legjobb gyakorlatok és a túlszámlálások kezelése:
- Szószám ellenőrzése: A csonkítás előtt ellenőrizze, hogy az eredeti tartalom szószáma meghaladja-e a kívánt kivonathosszt. Ha nem, küldje vissza az eredeti tartalmat.
- Kerülje a szavak törését: Az olvashatóság megőrzése érdekében ügyeljen arra, hogy a kivonat utolsó szava teljes legyen.
- Ellipszis hozzáadása: Opcionálisan adjon hozzá egy ellipszist (
...
) a végén, ha a tartalom csonka.
Kivonat a mondatszámlálóból
A kivonatok mondatszám szerinti létrehozása bizonyos számú mondat tartalomból való megtartását jelenti.
function excerptBySentenceCount($content, $sentenceCount) {
$sentences = explode('.', $content);
if (count($sentences) > $sentenceCount) {
$sentences = array_slice($sentences, 0, $sentenceCount);
$content = implode('. ', $sentences) . '.';
}
return $content;
}
Használat
// Excerpt of first 3 sentences
$sentenceCountExcerpt = excerptBySentenceCount($originalContent, 3);
A frissítéshez a excerptBySentenceCount
függvényt, hogy bármilyen írásjelet tartalmazó mondatokat is tartalmazzon a végén (nem csak pontokat), akkor módosíthatja a funkciót, hogy a tartalmat egy olyan reguláris kifejezéssel bontsa fel, amely megfelel bármilyen tipikus mondatvégi írásjelnek, például pontnak, felkiáltójelnek vagy kérdőjelnek. Íme, hogyan teheti ezt meg PHP-ben:
function excerptBySentenceCount($content, $sentenceCount) {
// Use a regular expression to split the content by sentence-ending punctuation
$sentences = preg_split('/(?<=[.!?])\s+/', $content, -1, PREG_SPLIT_NO_EMPTY);
if (count($sentences) > $sentenceCount) {
$sentences = array_slice($sentences, 0, $sentenceCount);
$content = implode(' ', $sentences);
// Check the last character to ensure it ends with punctuation
if (!preg_match('/[.!?]$/', $content)) {
$content .= '.';
}
}
return $content;
}
Ez a funkció használja preg_split
reguláris kifejezéssel (regex) /(?<=[.!?])\s+/
amely szóközökre osztja a szöveget (\s+
), amelyek pontot, felkiáltójelet vagy kérdőjelet követnek ([.!?]
). A (?<=...)
egy pozitív kitekintés az állítás mögé, amely ellenőrzi a mondatvégi írásjelek jelenlétét anélkül, hogy bevenné a felosztásba. A PREG_SPLIT_NO_EMPTY
zászló biztosítja, hogy csak a nem üres darabokat küldjék vissza.
Végül a függvény ellenőrzi, hogy az eredményül kapott tartalom utolsó karaktere mondatvégi írásjel-e. Ha nem, akkor a kivonat végén pontot fűz a megfelelő írásjelek megőrzéséhez.
A legjobb gyakorlatok és a túlszámlálások kezelése:
- Megfelelő mondatfelismerés: A mondatok felosztásához használjon pontot, majd szóközt. Ezzel elkerülhető a rövidítésekben használt pontokra bontás.
- Mondatszám ellenőrzése: A szószámhoz hasonlóan ellenőrizze, hogy az eredeti tartalom mondatszáma elegendő-e.
- Írásjelek megőrzése: Ügyeljen arra, hogy a kivonat megfelelő írásjelekkel, általában ponttal végződjön.
Kivonat a bekezdésszámból
A bekezdésszám alapján történő kivonatok létrehozása bizonyos számú bekezdés után a tartalom csonkolását jelenti.
function excerptByParagraphCount($content, $paragraphCount) {
$paragraphs = explode("\n", $content);
if (count($paragraphs) > $paragraphCount) {
$paragraphs = array_slice($paragraphs, 0, $paragraphCount);
$content = implode("\n", $paragraphs);
}
return $content;
}
Használat:
// Excerpt of first 2 paragraphs
$paragraphCountExcerpt = excerptByParagraphCount($originalContent, 2);
A legjobb gyakorlatok és a túlszámlálások kezelése:
- Használjon új sorokat a bekezdésekhez: A bekezdéseket általában új sorok választják el (
\n
). Győződjön meg arról, hogy a tartalom ezt a formátumot követi. - Ellenőrizze a bekezdések számát: Érvényesítse, hogy a tartalom bekezdésszáma megfelelő-e a kivonathoz.
- Tartsa tiszteletben a tartalom szerkezetét: A tartalom integritásának megőrzése érdekében tartsa fenn a kivonat bekezdéseinek szerkezetét.
Kivonat a HTML bekezdésszámból
Ha HTML-tartalommal foglalkozik, érdemes kivonatokat kivonni a <p>
címkéket az eredeti tartalom szerkezetének és formázásának megőrzéséhez.
function excerptByHtmlParagraphCount($content, $paragraphCount) {
preg_match_all('/<p[^>]*>.*?<\/p>/', $content, $paragraphs);
$paragraphs = $paragraphs[0];
if (count($paragraphs) > $paragraphCount) {
$paragraphs = array_slice($paragraphs, 0, $paragraphCount);
$content = implode(' ', $paragraphs);
}
return $content;
}
Használat:
// Excerpt of first 2 paragraphs
$paragraphCountExcerpt = excerptByHtmlParagraphCount($htmlContent, 2);
A legjobb gyakorlatok és a túlszámlálások kezelése:
- Szabályos kifejezések címkeegyezéshez: Felhasználás
preg_match_all
megfelelő reguláris kifejezéssel<p>
címkéket. Ez a megközelítés biztosítja a bekezdéscímkék szerkezetének és attribútumainak megőrzését. - Tartsa tiszteletben a HTML szerkezetét: Győződjön meg arról, hogy a kivonat megtartja a HTML-struktúrát. Kerülje a címkék feltörését, ami megjelenítési problémákhoz vezethet.
- Ellenőrizze a bekezdések számát: Az egyszerű szöveghez hasonlóan ellenőrizze, hogy az eredeti tartalom bekezdésszáma elegendő-e a kivonathoz.
- Beágyazott címkék kezelése: Ne feledje, hogy a bekezdések tartalmazhatnak más HTML-elemeket, például hivatkozásokat vagy szakaszokat. Gondoskodjon arról, hogy a reguláris kifejezések a bekezdéseken belüli beágyazott címkéket tartalmazzák.
A kivonatok készítése HTML bekezdésszám alapján PHP-ben fejlettebb feladat a sima szövegek kezeléséhez képest. A HTML-struktúra integritásának megőrzéséhez elengedhetetlen a reguláris kifejezések körültekintő használata. Ez a módszer különösen fontos azoknál a webes alkalmazásoknál, ahol a tartalmat az eredeti formázással kell megjeleníteni. Mint mindig, ellenőrizze az eredeti tartalom hosszát, és vegye figyelembe a felhasználói élményt a részletek bemutatásakor.
Igen, a WordPress saját funkciókkal és szolgáltatásokkal rendelkezik, amelyek megkönnyítik a kivonatok létrehozását, ami nagyban leegyszerűsítheti a folyamatot a PHP-ben történő kivonatok kézi kezeléséhez képest. Íme egy áttekintés a kivonatokhoz kapcsolódó legfontosabb WordPress-funkciókról:
A kivonat funkció a WordPressben
A WordPress API robusztus rendszert kínál a kivonatok kezelésére, így a legtöbb tipikus használati esetre szükségtelenné teszi a PHP függvények kézi megvalósítását. A WordPress felhasználóbarát módot biztosít a bejegyzések összefoglalóinak kezelésére, legyen szó a hossz testreszabásáról vagy módosításáról Klikk ide szöveget, vagy sabloncímkéket használ a kivonatok megjelenítéséhez.
the_excerpt()
Ez a WordPress sabloncímke automatikusan kinyomtat egy bejegyzés kivonatát. Témákban gyakran használják bejegyzés-összefoglaló megjelenítésére az archív oldalakon.
- Használat: Hely
the_excerpt()
a The Loop-on belül a témafájlokban, ahol meg szeretné jeleníteni a részletet. - viselkedés: Alapértelmezés szerint a bejegyzés első 55 szavát mutatja. Ha van egy manuálisan beállított kivonat a bejegyzésszerkesztőben, akkor azt fogja megjeleníteni.
get_the_excerpt()
Ez a funkció megjelenítése nélkül kéri le a kivonatot, így jobban szabályozhatja, hogyan és hol használja azt.
- Használat:
get_the_excerpt($post)
egy adott bejegyzés kivonatának lekérésére használható. - Testreszabás: A visszaadott karakterláncot szükség szerint módosíthatja a megjelenítés előtt.
A kivonat hosszának testreszabása
A WordPress lehetővé teszi az alapértelmezett kivonat hosszának megváltoztatását a excerpt_length
szűrő.
function custom_excerpt_length($length) {
return 20; // Return 20 words as the new excerpt length
}
add_filter('excerpt_length', 'custom_excerpt_length');
Több címke és szövegrészlet kezelése
the_content('Read more')
Ez a funkció addig jeleníti meg a tartalmat, amíg az „tovább” címkével nem találkozik. Hasznos lehet egyéni hosszúságú kivonatok megjelenítéséhez közvetlenül a tartalomszerkesztőben.
További szövegrészlet testreszabása
Testreszabhatja a kivonat végén megjelenő szöveget (pl […]
) segítségével excerpt_more
szűrő.
function custom_excerpt_more($more) {
return '...'; // Replace the default [...] with ...
}
add_filter('excerpt_more', 'custom_excerpt_more');
HTML kezelése kivonatokban
A WordPress kivonatok alapértelmezés szerint egyszerű szövegesek. Ha meg kell őriznie a HTML címkéket kivonatokban, akkor létre kell hoznia egy egyedi függvényt, vagy használjon egy erre a célra kialakított bővítményt.
Egyéni kódolásra vagy beépülő modulokra azonban szükség lehet olyan speciális követelmények teljesítéséhez, mint a HTML-címkék megőrzése a kivonatokban vagy a kivonatok létrehozása meghatározott elemek, például mondatok vagy bekezdések alapján.