Hướng dẫn php regex replace special characters - php regex thay thế các ký tự đặc biệt

18

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi muốn thay thế tất cả các ký tự không có chữ cái và số, tức là

string(23) "Thäre_wouldnt_bé_äny"
0 vv bằng dấu gạch dưới
string(23) "Thäre_wouldnt_bé_äny"
1 và thay thế tất cả
string(23) "Thäre_wouldnt_bé_äny"
2 (trích dẫn đơn) bằng trống "____ 13" (để không nhấn mạnh).

Vì vậy, "sẽ không có bất kỳ" (bỏ qua các trích dẫn kép) sẽ trở thành "ở đó_wouldnt_be_any".There wouldn't be any" (ignore the double quotes) would become "There_wouldnt_be_any".

Tôi vô dụng tại các biểu thức reg do đó bài viết.

Chúc mừng

Hướng dẫn php regex replace special characters - php regex thay thế các ký tự đặc biệt

Uniruddh

4.3823 Huy hiệu vàng51 Huy hiệu bạc86 Huy hiệu Đồng3 gold badges51 silver badges86 bronze badges

Hỏi ngày 13 tháng 12 năm 2011 lúc 2:15Dec 13, 2011 at 2:15

Nếu bạn viết "Không phải chữ cái và số" loại trừ nhiều hơn

string(23) "Thäre_wouldnt_bé_äny"
4 (ví dụ: xem xét các chữ cái như
string(23) "Thäre_wouldnt_bé_äny"
5 để được thư) và muốn có thể xử lý chính xác chuỗi UTF-8
string(23) "Thäre_wouldnt_bé_äny"
6 và
string(23) "Thäre_wouldnt_bé_äny"
7 sẽ được hỗ trợ.

  1. string(23) "Thäre_wouldnt_bé_äny"
    
    7 sẽ khớp với bất kỳ "số" nào
  2. string(23) "Thäre_wouldnt_bé_äny"
    
    6 sẽ phù hợp với bất kỳ "ký tự chữ" nào, bao gồm
    • Chữ cái thường
    • Thư sửa đổi
    • Thư khác
    • Thư mục tiêu đề
    • Chữ viết hoa

Tài liệu PHP: Thuộc tính ký tự Unicode


$data = "Thäre!wouldn't%bé#äny";

$new_data = str_replace  ("'", "", $data);
$new_data = preg_replace ('/[^\p{L}\p{N}]/u', '_', $new_data);

var_dump (
  $new_data
);

đầu ra

string(23) "Thäre_wouldnt_bé_äny"

Đã trả lời ngày 13 tháng 12 năm 2011 lúc 3:16Dec 13, 2011 at 3:16

Hướng dẫn php regex replace special characters - php regex thay thế các ký tự đặc biệt

6

$newstr = preg_replace('/[^a-zA-Z0-9\']/', '_', "There wouldn't be any");
$newstr = str_replace("'", '', $newstr);

Tôi đặt chúng trên hai dòng riêng biệt để làm cho mã rõ ràng hơn một chút.

Lưu ý: Nếu bạn đang tìm kiếm hỗ trợ Unicode, hãy xem câu trả lời của Filip bên dưới. Nó sẽ phù hợp với tất cả các ký tự đăng ký dưới dạng các chữ cái ngoài

$newstr = preg_replace('/[^a-zA-Z0-9\']/', '_', "There wouldn't be any");
$newstr = str_replace("'", '', $newstr);
0.

Đã trả lời ngày 13 tháng 12 năm 2011 lúc 2:18Dec 13, 2011 at 2:18

Hướng dẫn php regex replace special characters - php regex thay thế các ký tự đặc biệt

Chris Bornhoftchris BornhoftChris Bornhoft

4.0254 Huy hiệu vàng35 Huy hiệu bạc55 Huy hiệu Đồng4 gold badges35 silver badges55 bronze badges

2

Làm điều này trong hai bước:

  1. Thay thế các ký tự không chữ bằng regex này:

    $newstr = preg_replace('/[^a-zA-Z0-9\']/', '_', "There wouldn't be any");
    $newstr = str_replace("'", '', $newstr);
    
    1

  2. Thay thế báo giá bằng regex này:

    $newstr = preg_replace('/[^a-zA-Z0-9\']/', '_', "There wouldn't be any");
    $newstr = str_replace("'", '', $newstr);
    
    2

và sử dụng

$newstr = preg_replace('/[^a-zA-Z0-9\']/', '_', "There wouldn't be any");
$newstr = str_replace("'", '', $newstr);
3:

$stringWithoutNonLetterCharacters = preg_replace("/[\/\&%#\$]/", "_", $yourString);
$stringWithQuotesReplacedWithSpaces = preg_replace("/[\"\']/", " ", $stringWithoutNonLetterCharacters);

Đã trả lời ngày 13 tháng 12 năm 2011 lúc 2:20Dec 13, 2011 at 2:20

Fardjadfardjadfardjad

Huy hiệu vàng 19.5k6 50 Huy hiệu bạc67 Huy hiệu đồng6 gold badges50 silver badges67 bronze badges

Các ký tự đặc biệt khỏi chuỗi có thể dễ dàng loại bỏ bằng hàm preg_replace () trong PHP. Hàm preg_replace () thực hiện tìm kiếm với biểu thức chính quy và thay thế các trận đấu bằng cách thay thế được chỉ định. Trong đoạn mã sau, chúng tôi sẽ chỉ cho bạn cách xóa các ký tự đặc biệt khỏi chuỗi bằng PHP.

Mã ví dụ sau sử dụng preg_replace () với các biểu thức thông thường để xóa các ký tự đặc biệt khỏi chuỗi trong PHP.

Xóa các ký tự đặc biệt khỏi chuỗi

Mã sau đây loại bỏ các ký tự đặc biệt khỏi chuỗi với mẫu biểu thức chính quy (regex) trong PHP.

$string "Wel%come *to( codex;// Remove special characters
$cleanStr preg_replace('/[^A-Za-z0-9]/'''$string);

Output:

Welcometocodexworldtheworldofprogramming

Xóa các ký tự đặc biệt khỏi chuỗi ngoại trừ không gian

Mã sau đây loại bỏ các ký tự đặc biệt khỏi chuỗi ngoại trừ không gian trong PHP.

// Remove special characters except space
$cleanStr preg_replace('/[^A-Za-z0-9 ]/'''$string);

Output:

Welcome to codexworld the world of programming

Chuỗi sạch cho URL thân thiện với SEO

Mã sau đây làm sạch một chuỗi có thể được sử dụng trong phân đoạn URI trong PHP để tạo URL thân thiện với SEO.

function cleanStr($string){
    
// Replaces all spaces with hyphens.
    
$string str_replace(' ''-'$string);
    
// Removes special chars.
    
$string preg_replace('/[^A-Za-z0-9\-]/'''$string);
    
// Replaces multiple hyphens with single one.
    
$string preg_replace('/-+/''-'$string);

        return

$string;
}
$cleanStr cleanStr($string);

Output:

Welcome-to-codexworld-the-world-of-programming

Làm thế nào tôi có thể thay thế các ký tự đặc biệt trong một chuỗi trong PHP?

Hàm str_replace () thay thế một số ký tự bằng một số ký tự khác trong một chuỗi. Hàm này hoạt động theo các quy tắc sau: Nếu chuỗi được tìm kiếm là một mảng, nó sẽ trả về một mảng. Nếu chuỗi được tìm kiếm là một mảng, hãy tìm và thay thế được thực hiện với mọi phần tử mảng. replaces some characters with some other characters in a string. This function works by the following rules: If the string to be searched is an array, it returns an array. If the string to be searched is an array, find and replace is performed with every array element.

Làm thế nào loại bỏ tất cả các ký tự đặc biệt khỏi một chuỗi trong PHP?

Sử dụng phương thức str_replace (): Phương thức str_replace () được sử dụng để loại bỏ tất cả các ký tự đặc biệt khỏi chuỗi str str str bằng cách thay thế các ký tự này bằng không gian trắng (phạm lỗi).: The str_replace() method is used to remove all the special characters from the given string str by replacing these characters with the white space (” “).

Làm cách nào để loại bỏ các ký tự đặc biệt khỏi chuỗi?

Ví dụ về việc loại bỏ các ký tự đặc biệt bằng phương thức thay thế ()..
Loại bỏ lớp công khai EXPECIALCHARACTERExample1 ..
Công khai tĩnh chính (chuỗi args []).
Chuỗi str = "#chuỗi%này chứa^ký tự*đặc biệt &." ;.
str = str.replaceall ("[^a-za-z0-9]", "") ;.
System.out.println(str);.

Sự khác biệt giữa preg_replace và str_replace là gì?

str_replace thay thế một sự xuất hiện cụ thể của một chuỗi, ví dụ "foo" sẽ chỉ khớp và thay thế điều đó: "foo" .preg_replace sẽ thực hiện khớp biểu thức thông thường, ví dụ "/f. {2}/" sẽ khớp và thay thế "foo", nhưng cũng là "fey", "linh sam", "cáo", "f12", v.v. preg_replace will do regular expression matching, for instance "/f. {2}/" will match and replace "foo", but also "fey", "fir", "fox", "f12", etc.