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.
Doug, yn C # gallwch ddefnyddio'r dull String.LastIndexOf i wneud yr hyn y mae strrpos yn ei wneud yn PHP.
Roeddwn i'n gwybod y byddai hynny'n digwydd! 🙂
Diolch, Abhijit!
Ardderchog! Yn union yr hyn yr oeddwn yn edrych amdano. Diolch.
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 ()…)
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;
}
}
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.
Syniad mor dda!