
PHP: Κόψτε το απόσπασμά σας στη λέξη χρησιμοποιώντας strrpos
Εάν εργάζεστε με PHP και θέλετε να εμφανίσετε μόνο ένα απόσπασμα από το πηγαίο κείμενο και να το κόψετε σε διάφορους χαρακτήρες, το απόσπασμά σας μπορεί να φαίνεται άσχημο αν έχει γίνει μεσαία σειρά. Έπρεπε να γράψω μια συνάρτηση για να το κάνω αυτό στο ASP και στο ASP.NET που βασικά γύρισε από τον τελευταίο χαρακτήρα πίσω για να βρει τον τελευταίο χώρο και να τον κόψει εκεί. Κάτι άσχημο και λίγο υπερβολικό. Μπορείτε πραγματικά να το δείτε σε δράση στο σπίτι μου σελίδα όπου παρέχω μόνο τους πρώτους 500 χαρακτήρες.
Ήμουν πλήρως προετοιμασμένος να αναπτύξω την ίδια λειτουργία με την PHP σήμερα, αλλά διαπίστωσα (ως συνήθως) ότι η PHP είχε μια λειτουργία που το έχει ήδη, στράππος.
Ο παλιός κώδικας θα πάρει ένα substring ($ content) από τον πρώτο χαρακτήρα στον μέγιστο αριθμό χαρακτήρων που θέλετε ($ maxchars):
$ content = substr ($ content, 0, $ maxchars); echo $ περιεχόμενο;
Ο νέος κωδικός:
$ content = substr ($ content, 0, $ maxchars); $ pos = strrpos ($ content, ""); αν ($ pos> 0) {$ content = substr ($ content, 0, $ pos); } echo $ περιεχόμενο;
Έτσι, ο νέος κώδικας διακόπτει πρώτα το περιεχόμενο στο όριο χαρακτήρων που ψάχνετε. Ωστόσο, το επόμενο βήμα είναι να αναζητήσετε τον τελευταίο χώρο ("") στο περιεχόμενο. $ pos θα καταλήξει να είναι αυτή η θέση. Τώρα, απλώς διασφαλίζω ότι υπάρχει πραγματικά ένα κενό στο περιεχόμενο ρωτώντας εάν $ pos> 0. Εάν δεν υπάρχει, απλώς θα κόψει το περιεχόμενο με τον αριθμό των χαρακτήρων που έχω ζητήσει. Εάν υπάρχει χώρος, θα κόψει με χαρά το περιεχόμενό μου στο χώρο.
Αυτός είναι ένας καλός τρόπος χρήσης του συνδυασμού του μέγιστου αριθμού χαρακτήρων και της αποκοπής του στη λέξη. Ελπίζω να σου αρέσει!
Και είμαι σίγουρος ότι θα μάθω αν υπάρχει μια συνάρτηση ASP.NET που το κάνει αυτό ... Δεν μπορούσα να βρω κάτι.
Doug, στο C # μπορείτε να χρησιμοποιήσετε τη μέθοδο String.LastIndexOf για να κάνετε αυτό που κάνει το strrpos στο PHP.
Ήξερα ότι θα συνέβαινε! 🙂
Ευχαριστώ, Abhijit!
Εξοχος! Ακριβώς αυτό που έψαχνα. Ευχαριστώ.
Αν το περιεχόμενο $ αρχικά είναι μικρότερο από το $ maxchars, ο κώδικας όπως γράφεται θα εξακολουθεί να φαίνεται δεξιά προς τα αριστερά για ένα κενό διάστημα και να κόβει την τελευταία λέξη. Μπορείτε είτε να συνενώσετε ένα κενό στο τέλος του περιεχομένου $, είτε να κάνετε ένα (strlen ()…)
Αυτό φάνηκε να λειτουργεί ως συνάρτηση (αντιμετωπίζοντας το προηγούμενο σχόλιο):
function showexcerpt ($ content, $ maxchars) {
if (strlen ($ content)> $ maxchars) {
$ content = substr ($ content, 0, $ maxchars);
$ pos = strrpos ($ content, "");
αν ($ pos> 0) {
$ content = substr ($ content, 0, $ pos);
}
επιστρέψτε το περιεχόμενο $. "…";
} Else {
επιστρέψτε περιεχόμενο $.
}
}
Τι γίνεται αν ο τελικός μας χαρακτήρας είναι ένας χαρακτήρας στίξης όπως ένα τελείωμα, θαυμαστικό ή ερωτηματικό; Δυστυχώς, αυτός ο κωδικός θα διαγράψει ολόκληρη τη λέξη που προηγείται του εν λόγω χαρακτήρα στίξης.
Νομίζω ότι θα ήταν καλύτερα να γράψεις κάτι λίγο πιο στιβαρό.
Μια τόσο καλή ιδέα!