Tôi nhận được một chuỗi từ truy vấn cơ sở dữ liệu, sau đó tôi xóa tất cả các thẻ HTML, trả về vận chuyển và Newlines trước khi tôi đặt nó vào tệp CSV. Chỉ có điều đó là, tôi không thể tìm cách loại bỏ khoảng trắng dư thừa từ giữa các chuỗi.excess white space from between the strings.
Điều gì sẽ là cách tốt nhất để loại bỏ các ký tự khoảng trắng bên trong?
Amar
13.2K7 Huy hiệu vàng52 Huy hiệu bạc70 Huy hiệu đồng7 gold badges52 silver badges70 bronze badges
Đã hỏi ngày 9 tháng 11 năm 2009 lúc 19:52Nov 9, 2009 at 19:52
4
Không chắc chắn chính xác những gì bạn muốn nhưng đây là hai tình huống:
Nếu bạn chỉ xử lý khoảng trắng dư thừa ở đầu hoặc cuối chuỗi, bạn có thể sử dụng
1,$str = str_replace[' ','',$str];
2 hoặc$str = str_replace[' ','',$str];
3 để loại bỏ nó.$str = str_replace[' ','',$str];
Nếu bạn đang xử lý các không gian bổ sung trong một chuỗi, hãy xem xét một
4 của nhiều khoảng trắng$str = str_replace[' ','',$str];
5 với một khoảng trắng duy nhất$str = str_replace[' ','',$str];
6.$str = str_replace[' ','',$str];
Example:
$foo = preg_replace['/\s+/', ' ', $foo];
Vaidas
9089 Huy hiệu bạc22 Huy hiệu đồng9 silver badges22 bronze badges
Đã trả lời ngày 9 tháng 11 năm 2009 lúc 20:05Nov 9, 2009 at 20:05
jW.jW.jW.
9.14012 Huy hiệu vàng46 Huy hiệu bạc 50 Huy hiệu Đồng12 gold badges46 silver badges50 bronze badges
6
$str = str_replace[' ','',$str];
Hoặc, thay thế bằng dấu gạch dưới, & nbsp; Vân vân.
Đã trả lời ngày 9 tháng 11 năm 2009 lúc 19:53Nov 9, 2009 at 19:53
Cory Deecory DeeCory Dee
2.7786 huy hiệu vàng38 Huy hiệu bạc55 Huy hiệu đồng6 gold badges38 silver badges55 bronze badges
5
Không có ví dụ nào khác làm việc cho tôi, vì vậy tôi đã sử dụng cái này:
trim[preg_replace['/[\t\n\r\s]+/', ' ', $text_to_clean_up]]
Điều này thay thế tất cả các tab, dòng mới, không gian đôi, vv thành không gian 1 đơn giản.
Đã trả lời ngày 3 tháng 7 năm 2014 lúc 7:01Jul 3, 2014 at 7:01
Lukas liesislukas liesisLukas Liesis
22.6K9 Huy hiệu vàng106 Huy hiệu bạc102 Huy hiệu Đồng9 gold badges106 silver badges102 bronze badges
1
$str = str_replace[' ','',$str];
7Dòng mã trên sẽ loại bỏ các không gian bổ sung, cũng như các không gian dẫn đầu và dấu vết.
Đã trả lời ngày 19 tháng 6 năm 2013 lúc 0:50Jun 19, 2013 at 0:50
d-_-bd-_-bd-_-b
20,5K39 Huy hiệu vàng141 Huy hiệu bạc234 Huy hiệu đồng39 gold badges141 silver badges234 bronze badges
Nếu bạn muốn chỉ thay thế nhiều khoảng trống trong một chuỗi, ví dụ:
$str = str_replace[' ','',$str];
8 và bạn mong đợi câu trả lời sẽ là $str = str_replace[' ','',$str];
9, bạn có thể sử dụng giải pháp sau:$strng = "this string have lots of space . ";
$strng = trim[preg_replace['/\s+/',' ', $strng]];
echo $strng;
Đậu phụng
3.5633 huy hiệu vàng29 Huy hiệu bạc44 Huy hiệu đồng3 gold badges29 silver badges44 bronze badges
Đã trả lời ngày 22 tháng 5 năm 2015 lúc 7:18May 22, 2015 at 7:18
ApsarapsarApsar
2253 Huy hiệu bạc6 Huy hiệu đồng3 silver badges6 bronze badges
1
Có những sai sót bảo mật khi sử dụng preg_replace [], nếu bạn nhận được tải trọng từ đầu vào của người dùng [hoặc các nguồn không đáng tin cậy khác]. PHP thực thi biểu thức chính quy với eval []. Nếu chuỗi đến không được vệ sinh đúng cách, ứng dụng của bạn có nguy cơ bị tiêm mã.code injection.
Trong ứng dụng của riêng tôi, thay vì làm phiền việc vệ sinh đầu vào [và khi tôi chỉ xử lý các chuỗi ngắn], thay vào đó tôi đã tạo ra một chức năng chuyên sâu hơn một chút, mặc dù là an toàn, vì nó không phải là bất cứ điều gì.
function secureRip[string $str]: string { /* Rips all whitespace securely. */
$arr = str_split[$str, 1];
$retStr = '';
foreach [$arr as $char] {
$retStr .= trim[$char];
}
return $retStr;
}
Đã trả lời ngày 29 tháng 6 năm 2018 lúc 14:55Jun 29, 2018 at 14:55
FOMFOMFom
4796 Huy hiệu bạc13 Huy hiệu Đồng6 silver badges13 bronze badges
1
$str = preg_replace['/[\s]+/', ' ', $str];
Amir fo
4,4941 Huy hiệu vàng39 Huy hiệu bạc46 Huy hiệu đồng1 gold badge39 silver badges46 bronze badges
Đã trả lời ngày 28 tháng 4 năm 2010 lúc 12:57Apr 28, 2010 at 12:57
0
Bạn có thể dùng:
$str = trim[str_replace[" ", " ", $str]];
Điều này loại bỏ thêm khoảng trắng từ cả hai bên của chuỗi và chuyển đổi hai khoảng trống thành một trong chuỗi. Lưu ý rằng điều này sẽ không chuyển đổi ba hoặc nhiều không gian liên tiếp thành một! Một cách khác mà tôi có thể đề xuất là sử dụng sự bùng nổ và bùng nổ an toàn hơn nhưng hoàn toàn không tối ưu!removes extra whitespaces from both sides of string and converts two spaces to one within the string. Note that this won't convert three or more spaces in a row to one! Another way I can suggest is using implode and explode that is safer but totally not optimum!
$str = implode[" ", array_filter[explode[" ", $str]]];
Đề xuất của tôi là sử dụng một bản địa cho vòng lặp hoặc sử dụng Regex để thực hiện loại công việc này.
Đã trả lời ngày 3 tháng 7 năm 2018 lúc 15:41Jul 3, 2018 at 15:41
Bọt Amir choAmir Fo
4,4941 Huy hiệu vàng39 Huy hiệu bạc46 Huy hiệu đồng1 gold badge39 silver badges46 bronze badges
1
Đã trả lời ngày 28 tháng 4 năm 2010 lúc 12:57
? productID =26%20via%20@LFS
Bạn có thể dùng:
$productID=preg_replace['/[\s]+.*/','',$productID];
Điều này loại bỏ thêm khoảng trắng từ cả hai bên của chuỗi và chuyển đổi hai khoảng trống thành một trong chuỗi. Lưu ý rằng điều này sẽ không chuyển đổi ba hoặc nhiều không gian liên tiếp thành một! Một cách khác mà tôi có thể đề xuất là sử dụng sự bùng nổ và bùng nổ an toàn hơn nhưng hoàn toàn không tối ưu!
Đề xuất của tôi là sử dụng một bản địa cho vòng lặp hoặc sử dụng Regex để thực hiện loại công việc này.Dec 3, 2013 at 23:40
Đã trả lời ngày 3 tháng 7 năm 2018 lúc 15:41JScarry
Bọt Amir cho1 gold badge13 silver badges25 bronze badges
Để mở rộng trên câu trả lời của Sandip, tôi đã có một loạt các chuỗi hiển thị trong các bản ghi được mã hóa sai bằng bit.ly. Họ có nghĩa là mã chỉ URL nhưng đặt một tay cầm Twitter và một số thứ khác sau một không gian. Nó trông như thế này
Thông thường, đó sẽ không phải là vấn đề, nhưng tôi đang nhận được rất nhiều nỗ lực tiêm SQL, vì vậy tôi chuyển hướng bất cứ thứ gì không phải là ID hợp lệ cho 404. Tôi đã sử dụng phương thức preg_replace để biến chuỗi sản phẩm không hợp lệ thành một chuỗi Sản phẩm hợp lệ.May 9, 2019 at 10:59
Tôi tìm kiếm một không gian trong URL và sau đó loại bỏ mọi thứ sau nó.zsoro
Đã trả lời ngày 3 tháng 12 năm 2013 lúc 23:401 silver badge9 bronze badges
$str = str_replace[' ','',$str];
0JScarryjScarryMar 23, 2019 at 10:38