Tôi đang cố gắng để thay thế tất cả các không gian với dấu gạch dưới và sau đây không được làm việc:preg_replace tất cả các không gian
$id = "aa aa";
echo $id;
preg_replace('/\s+/', '_', $id);
echo $id;
in
aa aaaa aa
Tôi đang cố gắng để thay thế tất cả các không gian với dấu gạch dưới và sau đây không được làm việc:preg_replace tất cả các không gian
$id = "aa aa";
echo $id;
preg_replace('/\s+/', '_', $id);
echo $id;
in
aa aaaa aa
Chức năng preg_replace
không modi fy chuỗi tại chỗ. Nó trả về một chuỗi mới với kết quả của sự thay thế. Bạn nên gán kết quả của các cuộc gọi trở lại $id
biến:
$id = preg_replace('/\s+/', '_', $id);
Bạn đã quên gán kết quả của preg_replace
vào $id
của bạn
$id = preg_replace('/\s+/', '_', $id);
Tôi nghĩ str_replace()
có thể thích hợp hơn ở đây:
$id = "aa aa";
$id = str_replace(' ', '_', $id);
echo $id;
Mã này không tái tạo những gì OP đang cố gắng thực hiện. –
@VincentSavard: "thay thế tất cả các dấu cách bằng dấu gạch dưới" ... Tôi nghĩ vậy :) – Clive
Câu của anh ta rời khỏi nơi diễn giải, nhưng mã của anh ấy không. Mã của bạn sẽ thay thế mọi không gian đơn thành dấu gạch dưới, trong khi ông dường như muốn thay thế mọi nhóm ký tự trắng thành một dấu gạch dưới đơn. –
Chúng ta cần phải thay thế các không gian trong chuỗi "aa aa" với '_' (gạch dưới). \ S + được sử dụng để khớp với nhiều dấu cách. Đầu ra sẽ là "aa_aa"
<?php
$id = "aa aa";
$new_id = preg_replace('/\s+/', '_', $id);
echo $new_id;
?>
Lưu ý rằng nếu trang của bạn được mã hóa bằng UTF-8 thì bạn phải thêm công cụ sửa đổi unicode vào cuối biểu thức chính quy, để nó trở thành preg_replace ('/ \ s +/u ',' _ ', $ id); Việc không thêm điều này có thể gây ra các ký tự không hợp lệ trong văn bản được mã hóa UTF-8 của bạn. Xem: https://stackoverflow.com/q/43849130/649497 – BruceHill