Jekk qed taħdem bil-PHP u trid turi biss silta mit-test tas-sors tiegħek u taqtagħha f'numru ta 'karattri, is-silta tiegħek tista' tidher kerha jekk tkun saret f'nofs is-sekwenza. Kelli nikteb funzjoni biex nagħmel dan fl-ASP u fl-ASP.NET li bażikament iċċiklat mill-aħħar karattru lura biex issib l-aħħar spazju u taqtagħha hemm. Tip ta 'diżgustanti u ftit żejjed. Fil-fatt tista 'tara dan fl-azzjoni fuq dar tiegħi paġna fejn nipprovdi biss l-ewwel 500 karattru.
Jien kont ippreparat għal kollox biex niżviluppa l-istess funzjoni ma 'PHP illum imma sibt (bħas-soltu) li PHP kellu funzjoni li diġà tagħmlu, strrpos.
Il-kodiċi l-antik jieħu substring ($ kontenut) mill-ewwel karattru għan-numru massimu ta 'karattri li trid ($ maxchars):
$ content = substr ($ content, 0, $ maxchars); eku $ kontenut;
Il-kodiċi l-ġdid:
$ content = substr ($ content, 0, $ maxchars); $ pos = strrpos ($ kontenut, ""); jekk ($ pos> 0) {$ content = substr ($ content, 0, $ pos); } eku $ kontenut;
Allura l-kodiċi l-ġdid l-ewwel jaqta 'l-kontenut fil-limitu tal-karattru li qed tfittex. Madankollu, il-pass li jmiss huwa li tfittex l-aħħar spazju ("") fil-kontenut. $ pos jispiċċa jkun dik il-pożizzjoni. Issa, sempliċement niżgura li fil-fatt hemm spazju fil-kontenut billi nistaqsi jekk $ pos> 0. Jekk ma jkunx hemm, se taqta 'l-kontenut fin-numru ta' karattri li tlabt. Jekk hemm xi spazju, bil-grazzja se jaqta 'l-kontenut tiegħi fl-ispazju.
Dan huwa mod sabiħ ta 'kif tuża l-kombinazzjoni tan-numru massimu ta' karattri u taqta 'bil-kelma. Nispera li tħobb!
U jien ċert li nsib jekk hemmx funzjoni ASP.NET li tagħmel dan ... Ma stajtx insib waħda.
Doug, f'C# tista' tuża l-metodu String.LastIndexOf biex tagħmel dak li jagħmel strrpos fil-PHP.
Kont naf li se jiġri! 🙂
Grazzi, Abhijit!
Eċċellenti! Eżatt dak li kont qed infittex. Grazzi.
Jekk $content huwa inizjalment IQQAR minn $maxchars il-kodiċi kif miktub xorta se tħares lejn ix-xellug għal spazju u aqta 'l-aħħar kelma. Tista' jew tikkonkatena spazju fl-aħħar ta' $content, jew tagħmel if (strlen()...)
Dan deher li jaħdem bħala funzjoni (li jindirizza l-kumment preċedenti):
funzjoni showexcerpt($kontenut, $maxchars) {
jekk (strlen($kontenut) > $maxchars) {
$kontenut= substr($kontenut, 0, $maxchars);
$pos = strrpos($kontenut, " ");
jekk ($pos>0) {
$kontenut = substr($kontenut, 0, $pos);
}
ritorn $kontenut . "…";
} Inkella {
ritorn tal-kontenut $;
}
}
X'jiġri jekk il-karattru finali tagħna huwa karattru punteġġjatura bħal full-stop, marka ta' esklamazzjoni jew marka ta' mistoqsija? Sfortunatament, dan il-kodiċi se jimsaħ il-kelma kollha ta 'qabel l-imsemmi karattru ta' punteġġjatura.
Naħseb li tkun aħjar li tikteb xi ħaġa ftit aktar robusta.
Idea tajba bħal din!