PHP: Nogrieziet fragmentu pie vārda, izmantojot strrpos

HTML kods

Ja jūs strādājat ar PHP un vēlaties parādīt tikai izvilkumu no avota teksta un nogriezt to ar vairākām rakstzīmēm, jūsu izvilkums var izskatīties neglīts, ja tas ir izdarīts virknes vidū. Man bija jāuzraksta funkcija, lai to izdarītu ASP un ASP.NET, kas pamatā pārvietojās no pēdējās rakstzīmes atpakaļ, lai atrastu pēdējo vietu un to tur nogrieztu. Kaut kāds nejauks un nedaudz pārspīlēts. To faktiski var redzēt darbībā manās mājās lappuse kur es sniedzu tikai pirmās 500 rakstzīmes.

Es šodien biju pilnībā gatavs izstrādāt to pašu funkciju ar PHP, taču atklāju (kā parasti), ka PHP bija funkcija, kas to jau dara, strrpos.

Vecajā kodā no pirmās rakstzīmes līdz maksimālajam vajadzīgo rakstzīmju skaitam ($ maxchars) būs apakšvirkne ($ content):

$ content = substr ($ content, 0, $ maxchars); echo $ saturs;

Jaunais kods:

$ content = substr ($ content, 0, $ maxchars); $ pos = strrpos ($ content, ""); if ($ pos> 0) {$ content = substr ($ content, 0, $ pos); } atbalss $ saturs;

Tātad jaunais kods vispirms nogriež saturu pie meklēto rakstzīmju skaita ierobežojuma. Tomēr nākamais solis ir meklēt pēdējo vietu (““) saturā. $ pos beigsies tādā pozīcijā. Tagad es vienkārši pārliecinos, ka saturā patiešām ir atstarpe, vaicājot, vai $ pos> 0. Ja tā nav, tas vienkārši pārtrauks saturu pēc manis pieprasītā rakstzīmju skaita. Ja ir kāda vieta, tas graciozi nogriezīs manu saturu pie vietas.

Tas ir jauks veids, kā izmantot maksimālā rakstzīmju skaita kombināciju un samazināt to pie vārda. Ceru ka tev patīk!

Un es esmu pārliecināts, ka es uzzināšu, vai ir kāda ASP.NET funkcija, kas to dara ... Es to nevarēju atrast.

7 Komentāri

  1. 1
  2. 2
  3. 3
  4. 4

    Ja sākotnēji $ content ir SHORTER nekā $ maxchars, uzrakstītais kods joprojām izskatīsies no labās uz kreiso atstarpei un izgriezīs pēdējo vārdu. Varat vai nu salīmēt atstarpi $ satura beigās, vai arī veikt if (strlen ()…)

  5. 5

    Šķiet, ka tas darbojās kā funkcija (pievēršoties iepriekšējam komentāram):

    funkcija showexcerpt ($ content, $ maxchars) {

    if (strlen ($ content)> $ maxchars) {

    $ content = substr ($ content, 0, $ maxchars);
    $ pos = strrpos ($ content, "");

    ja ($ pos> 0) {
    $ content = substr ($ content, 0, $ pos);
    }

    atgriezt $ saturu. "…";

    } Vēl {

    atgriezt $ saturu;

    }

    }

  6. 6

    Ko darīt, ja mūsu pēdējais varonis ir pieturzīme, piemēram, punkts, izsaukuma zīme vai jautājuma zīme? Diemžēl šis kods izdzēsīs visu vārdu pirms minētās pieturzīmes.  

    Es domāju, ka labāk būtu uzrakstīt kaut ko mazliet robustāku.

  7. 7

Ko jūs domājat?

Šī vietne izmanto Akismet, lai samazinātu surogātpastu. Uzziniet, kā tiek apstrādāts jūsu komentārs.