ຖ້າທ່ານ ກຳ ລັງເຮັດວຽກກັບ PHP ແລະທ່ານຕ້ອງການສະແດງຄວາມຫຍໍ້ເທົ່ານັ້ນຈາກຕົວ ໜັງ ສືທີ່ມາຂອງທ່ານແລະຕັດມັນອອກຈາກຕົວອັກສອນຫຼາຍໆຕົວ, ຄຳ ອ້າງອີງຂອງທ່ານສາມາດເບິ່ງວ່າບໍ່ດີຖ້າມັນເຮັດໄດ້ກາງ. ຂ້ອຍຕ້ອງຂຽນ ໜ້າ ທີ່ເພື່ອເຮັດສິ່ງນີ້ໃນ ASP ແລະໃນ ASP.NET ໂດຍພື້ນຖານແລ້ວຮອບວຽນຈາກລັກສະນະສຸດທ້າຍກັບມາຊອກຫາຊ່ອງຫວ່າງສຸດທ້າຍແລະຕັດມັນຢູ່ທີ່ນັ້ນ. ປະເພດຂອງ nasty ແລະເລັກນ້ອຍຂອງ overkill. ທ່ານສາມາດເຫັນຕົວຈິງໃນການກະ ທຳ ຢູ່ເຮືອນຂອງຂ້ອຍ Page ບ່ອນທີ່ຂ້ອຍໃຫ້ພຽງ 500 ອັກສອນ ທຳ ອິດເທົ່ານັ້ນ.
ຂ້ອຍໄດ້ກຽມພ້ອມຢ່າງເຕັມທີ່ໃນການພັດທະນາຟັງຊັນດຽວກັນກັບ PHP ມື້ນີ້ແຕ່ພົບວ່າ (ຕາມປົກກະຕິ) ວ່າ PHP ມີ ໜ້າ ທີ່ເຮັດແລ້ວ, strrpos.
ລະຫັດເກົ່າຈະເອົາຕົວອັກສອນຫຍໍ້ ($ ເນື້ອຫາ) ຈາກຕົວອັກສອນ ທຳ ອິດຈົນເຖິງໂຕອັກສອນສູງສຸດທີ່ທ່ານຕ້ອງການ ($ maxchars):
$ content = substr ($ content, 0, $ maxchars); echo $ ເນື້ອຫາ;
ລະຫັດ ໃໝ່:
$ content = substr ($ content, 0, $ maxchars); $ pos = strrpos ($ ເນື້ອຫາ, ""); ຖ້າ ($ pos> 0) {$ content = substr ($ content, 0, $ pos); } echo $ ເນື້ອຫາ;
ດັ່ງນັ້ນລະຫັດ ໃໝ່ ນີ້ຈະຕັດເນື້ອຫາອອກກ່ອນຂອບເຂດທີ່ທ່ານ ກຳ ລັງຊອກຫາຢູ່. ເຖິງຢ່າງໃດກໍ່ຕາມ, ຂັ້ນຕອນຕໍ່ໄປແມ່ນການຊອກຫາຊ່ອງສຸດທ້າຍ ("") ໃນເນື້ອຫາ. $ pos ຈະລົມກັບການເປັນ ຕຳ ແໜ່ງ ນັ້ນ. ຕອນນີ້ຂ້ອຍພຽງແຕ່ຮັບປະກັນວ່າຕົວຈິງມີພື້ນທີ່ໃນເນື້ອຫາໂດຍຖາມວ່າ $ pos> 0. ຖ້າບໍ່ມີ, ມັນພຽງແຕ່ຈະຕັດເນື້ອຫາອອກຕາມ ຈຳ ນວນຕົວອັກສອນທີ່ຂ້ອຍໄດ້ຮ້ອງຂໍ. ຖ້າມີພື້ນທີ່, ມັນກໍ່ຈະຕັດເນື້ອຫາຂອງຂ້ອຍອອກໄປໃນອະວະກາດ.
ນີ້ແມ່ນວິທີການທີ່ດີຂອງການ ນຳ ໃຊ້ການປະສົມປະສານຂອງ ຈຳ ນວນຕົວອັກສອນສູງສຸດແລະການຕັດມັນທີ່ ຄຳ. ຫວັງວ່າເຈົ້າຈະມັກ!
ແລະຂ້ອຍແນ່ໃຈວ່າຂ້ອຍຈະພົບວ່າມີຫນ້າທີ່ ASP.NET ທີ່ເຮັດແບບນີ້ ... ຂ້ອຍບໍ່ສາມາດຊອກຫາມັນໄດ້.
Doug, ໃນ C # ທ່ານສາມາດໃຊ້ String.LastIndexOf method ເພື່ອເຮັດສິ່ງທີ່ strrpos ເຮັດໃນ PHP.
ຂ້ອຍຮູ້ວ່າມັນຈະເກີດຂຶ້ນ! 🙂
ຂອບໃຈ, Abhijit!
ເລີດ! ພຽງແຕ່ສິ່ງທີ່ຂ້ອຍກໍາລັງຊອກຫາ. ຂອບໃຈ.
ຖ້າ $content ໃນເບື້ອງຕົ້ນສັ້ນກວ່າ $maxchars ລະຫັດທີ່ຂຽນຈະຍັງຄົງເບິ່ງຂວາໄປຊ້າຍເພື່ອມີຊ່ອງຫວ່າງແລະຕັດຄໍາສຸດທ້າຍອອກ. ທ່ານສາມາດ concatenate ຊ່ອງໃນຕອນທ້າຍຂອງ $content, ຫຼືເຮັດການ if (strlen()…)
ນີ້ເບິ່ງຄືວ່າຈະເຮັດວຽກເປັນຫນ້າທີ່ (ແກ້ໄຂຄໍາເຫັນກ່ອນຫນ້ານີ້):
function showexcerpt($content, $maxchars) {
ຖ້າ (strlen($content) > $maxchars) {
$content= substr($content, 0, $maxchars);
$pos = strrpos($content, " ");
ຖ້າ ($pos>0) {
$content = substr($content, 0, $pos);
}
ສົ່ງຄືນ $content . “…”;
} else {
ຄືນເນື້ອຫາ $
}
}
ຈະເປັນແນວໃດຖ້າຕົວລະຄອນສຸດທ້າຍຂອງພວກເຮົາເປັນເຄື່ອງໝາຍວັກຕອນເຊັ່ນເຄື່ອງໝາຍຢຸດເຕັມ, ເຄື່ອງໝາຍອຸທານ ຫຼືເຄື່ອງໝາຍຖາມ? ໂຊກບໍ່ດີ, ລະຫັດນີ້ຈະເຊັດໃຫ້ໝົດທຸກຄຳກ່ອນໜ້າເຄື່ອງໝາຍວັກຕອນ.
ຂ້າພະເຈົ້າຄິດວ່າທ່ານຈະດີກວ່າທີ່ຈະຂຽນບາງສິ່ງບາງຢ່າງທີ່ເຂັ້ມແຂງພຽງເລັກນ້ອຍ.
ເປັນຄວາມຄິດທີ່ດີ!