PHP: Torrwch eich darn i ffwrdd wrth y gair gan ddefnyddio strrpos

cod html

Os ydych chi'n gweithio gyda PHP a'ch bod am ddangos dyfyniad o'ch testun ffynhonnell yn unig a'i dorri i ffwrdd ar nifer o gymeriadau, gall eich dyfyniad edrych yn hyll os caiff ei wneud yng nghanol y llinyn. Roedd yn rhaid i mi ysgrifennu swyddogaeth i wneud hyn yn ASP ac yn ASP.NET a oedd yn y bôn yn beicio o'r cymeriad olaf yn ôl i ddod o hyd i'r gofod olaf a'i dorri i ffwrdd yno. Math o gas ac ychydig bach o or-lenwi. Gallwch chi weld hyn ar waith ar fy nghartref dudalen lle dwi'n darparu'r 500 nod cyntaf yn unig.

Roeddwn yn hollol barod i ddatblygu’r un swyddogaeth â PHP heddiw ond darganfyddais (yn ôl yr arfer) bod gan PHP swyddogaeth sy’n ei wneud eisoes, strrpos.

Bydd yr hen god yn cymryd is-haen ($ cynnwys) o'r cymeriad cyntaf i'r nifer uchaf o nodau rydych chi eu heisiau ($ maxchars):

$ content = substr ($ cynnwys, 0, $ maxchars); adleisio $ cynnwys;

Y cod newydd:

$ content = substr ($ cynnwys, 0, $ maxchars); $ pos = strrpos ($ cynnwys, ""); os ($ pos> 0) {$ content = substr ($ cynnwys, 0, $ pos); } adleisio $ cynnwys;

Felly mae'r cod newydd yn torri'r cynnwys i ffwrdd ar y terfyn cymeriad rydych chi'n edrych amdano. Fodd bynnag, y cam nesaf yw edrych am y gofod olaf (”“) yn y cynnwys. Bydd $ pos yn dirwyn i ben fel y sefyllfa honno. Nawr, rwy'n syml yn sicrhau bod lle yn y cynnwys trwy ofyn a yw $ pos> 0. Os nad oes, bydd yn torri'r cynnwys i ffwrdd yn nifer y cymeriadau rydw i wedi gofyn amdanyn nhw. Os oes unrhyw le, bydd yn torri fy nghynnwys yn y gofod yn osgeiddig.

Mae hon yn ffordd braf o ddefnyddio'r cyfuniad o'r nifer uchaf o gymeriadau a'i dorri i ffwrdd wrth y gair. Gobeithio eich bod chi'n hoffi!

Ac rwy'n siŵr y byddaf yn darganfod a oes swyddogaeth ASP.NET sy'n gwneud hyn ... ni allwn ddod o hyd i un.

7 Sylwadau

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

    Os yw $ cynnwys yn SHORTER i ddechrau na $ maxchars, bydd y cod fel y'i hysgrifennwyd yn dal i edrych i'r dde i'r chwith am le a thorri'r gair olaf allan. Gallwch naill ai gyd-fynd â gofod ar ddiwedd $ cynnwys, neu wneud os (strlen ()…)

  5. 5

    Roedd yn ymddangos bod hyn yn gweithio fel swyddogaeth (mynd i'r afael â'r sylw blaenorol):

    showexcerpt swyddogaeth ($ cynnwys, $ maxchars) {

    os (strlen ($ cynnwys)> $ maxchars) {

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

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

    dychwelyd $ cynnwys. "...";

    } {Arall

    dychwelyd $ cynnwys;

    }

    }

  6. 6

    Beth os yw ein cymeriad olaf yn gymeriad atalnodi fel atalnod llawn, ebychnod neu farc cwestiwn? Yn anffodus, bydd y cod hwn yn sychu'r gair cyfan cyn y cymeriad atalnodi hwnnw.  

    Rwy'n credu y byddech chi'n well eich byd yn ysgrifennu rhywbeth ychydig yn fwy cadarn.

  7. 7

Beth ydych chi'n feddwl?

Mae'r wefan hon yn defnyddio Akismet i leihau sbam. Dysgwch sut mae eich data sylwadau yn cael ei brosesu.