2011-03-09 35 views

Trả lời

36

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ế: "foo". preg_replace sẽ thực hiện đối sánh cụm từ thông dụng, ví dụ "/f.{2}/" sẽ khớp và thay thế "foo", nhưng cũng "fey", "fir", "fox", "f12", v.v.

[EDIT]

Xem cho chính mình:

$string = "foo fighters"; 
$str_replace = str_replace('foo','bar',$string); 
$preg_replace = preg_replace('/f.{2}/','bar',$string); 
echo 'str_replace: ' . $str_replace . ', preg_replace: ' . $preg_replace; 

Đầu ra là:

str_replace: máy bay chiến đấu thanh, preg_replace: barhters thanh

:)

+0

Hmm, không thực sự nhìn thấy một lợi thế preg_replace, có vẻ như một hit'n'miss nhỏ! – benhowdle89

+12

Bạn không hỏi về lợi thế, mà là sự khác biệt giữa hai loại: D – mingos

+0

Không phàn nàn! Chỉ cần quan sát ... – benhowdle89

12

str_replace sẽ chỉ thay thế một chuỗi cố định với một chuỗi cố định, và nó sẽ nhanh hơn nhiều.

Chức năng biểu thức chính quy cho phép bạn tìm kiếm và thay thế bằng một mẫu không cố định được gọi là regular expression. Có rất nhiều "hương vị" của biểu thức chính quy mà chủ yếu là tương tự nhưng có chi tiết nhất định khác nhau; một trong những chúng tôi đang nói về ở đây là Perl Tương thích Regular Expressions (PCRE).

Nếu chúng trông giống như bạn, thì bạn nên sử dụng str_replace.

+0

cũng tốt cho tìm kiếm động trong các mẫu bạn không biết, nhưng nếu bạn biết mẫu (ngay cả khi đang chạy) bạn có thể tạo nút ngay sau đó và làm str_ trừ khi bạn muốn các phần khác nhau được bắt cùng một lúc . – My1

3

str_replace tìm kiếm xuất hiện văn bản thuần túy trong khi preg_replace cho mẫu.