Đối với người quan tâm: Tôi đã viết một chức năng sử dụng preg_match để bạn có thể thay thế từ phía bên phải bằng regex.
function preg_rreplace[$search, $replace, $subject] {
preg_match_all[$search, $subject, $matches, PREG_SET_ORDER];
$lastMatch = end[$matches];
if [$lastMatch && false !== $pos = strrpos[$subject, $lastMatchedStr = $lastMatch[0]]] {
$subject = substr_replace[$subject, $replace, $pos, strlen[$lastMatchedStr]];
}
return $subject;
}
Hoặc như là sự kết hợp/triển khai tốc ký của cả hai tùy chọn:
function str_rreplace[$search, $replace, $subject] {
return [false !== $pos = strrpos[$subject, $search]] ?
substr_replace[$subject, $replace, $pos, strlen[$search]] : $subject;
}
function preg_rreplace[$search, $replace, $subject] {
preg_match_all[$search, $subject, $matches, PREG_SET_ORDER];
return [$lastMatch = end[$matches]] ? str_rreplace[$lastMatch[0], $replace, $subject] : $subject;
}
Dựa trên //stackoverflow.com/a/3835653/3017716 và //stackoverflow.com/a/23343396/3017716
Thay thế một phần của chuỗi bằng một chuỗi khác là thẳng về phía trước, nhưng nếu bạn phải thay thế lần xuất hiện cuối cùng của một ký tự hoặc chuỗi bằng một chuỗi khác.
Đây là cách nhanh nhất để làm điều này.
function str_replace_last[ $search , $replace , $str ] { if[ [ $pos = strrpos[ $str , $search ] ] !== false ] { $search_length = strlen[ $search ]; $str = substr_replace[ $str , $replace , $pos , $search_length ]; } return $str; }
Đối số đầu tiên $search
giữ cho chuỗi được tìm kiếm, $replace
là chuỗi thay thế và $str
là chuỗi chủ đề, thường được gọi là Haystack.
Cách thay thế lần xuất hiện cuối cùng của chuỗi
$str = 'My Name is John.'; $search = 'John'; $replace = 'Peter'; echo str_replace_last[ $search , $replace , $str ]; //Result My Name is Peter.
Trong trường hợp $search
không được tìm thấy bên trong $str
, hàm trả về chuỗi ban đầu chưa được xử lý $str
. Hành vi này tương thích với hành vi mặc định của chức năng tích hợp
function str_rreplace[$search, $replace, $subject] {
return [false !== $pos = strrpos[$subject, $search]] ?
substr_replace[$subject, $replace, $pos, strlen[$search]] : $subject;
}
function preg_rreplace[$search, $replace, $subject] {
preg_match_all[$search, $subject, $matches, PREG_SET_ORDER];
return [$lastMatch = end[$matches]] ? str_rreplace[$lastMatch[0], $replace, $subject] : $subject;
}
1 Php, thay thế tất cả các lần xuất hiện của một chuỗi bên trong một chuỗi khác.1 Câu trả lời cho câu hỏi này.
Xin chào @Kartik,
Bạn có thể sử dụng chức năng này:
function str_lreplace[$search, $replace, $subject] { $pos = strrpos[$subject, $search]; if[$pos !== false] { $subject = substr_replace[$subject, $replace, $pos, strlen[$search]]; } return $subject; }
Hy vọng nó giúp!! Cảm ơn!!
ThanK you!!
• 82,800 points
Các câu hỏi liên quan trong PHP
- Tất cả danh mục
- Apache Kafka [84][84]
-
Apache Spark [596][596]
- Azure [131][131]
- Dữ liệu lớn Hadoop [1.907][1,907]
-
Blockchain [1.673][1,673]
- C# [134][134]
- C ++ [268][268]
-
Tư vấn nghề nghiệp [1.060][1,060]
- Điện toán đám mây [3,391][3,391]
- An ninh mạng & hack đạo đức [147][147]
- Phân tích dữ liệu [1.266][1,266]
- Cơ sở dữ liệu [855][855]
- Khoa học dữ liệu [75][75]
-
DevOps & Agile [3.500][3,500]
- Tiếp thị kỹ thuật số [111][111]
- Các chủ đề về sự kiện & xu hướng [28][28]
- IoT [Internet of Things] [387][387]
- Java [1.220][1,220]
- Kotlin [3][3]
-
Quản trị Linux [384][384]
- Học máy [337][337]
- MicroStrargety [6][6]
-
PMP [423][423]
- Power BI [516][516]
- Python [3.160][3,160]
- RPA [650][650]
- Salesforce [92][92]
- Selenium [1.569][1,569]
- Kiểm tra phần mềm [56][56]
- Tableau [608][608]
-
Talend [73][73]
- Các loại [124][124]
- Phát triển web [3,002][3,002]
-
Hỏi chúng tôi bất cứ điều gì! [66][66]
- Những người khác [1.435][1,435]
- Phát triển di động [165][165]
Tham gia cộng đồng công nghệ tích cực nhất thế giới!
Chào mừng trở lại với cộng đồng công nghệ tích cực nhất thế giới!
Đăng ký nhận bản tin của chúng tôi và nhận được các khuyến nghị cá nhân hóa.
Bạn co săn san để tạo một tai khoản? Đăng nhập.