2010-03-08 41 views
19

Bạn có thể sử dụng mảng với str_replace():str_replace() với mảng kết hợp

$array_from = array ('from1', 'from2'); 
$array_to = array ('to1', 'to2'); 

$text = str_replace ($array_from, $array_to, $text); 

Nhưng nếu bạn có mảng kết hợp?

$array_from_to = array (
'from1' => 'to1'; 
'from2' => 'to2'; 
); 

Bạn có thể sử dụng nó với str_replace() bằng cách nào?
Vấn đề tốc độ - mảng đủ lớn.

Trả lời

37

$text = strtr($text, $array_from_to)

Nhân tiện, đó vẫn là mảng "một chiều".

+0

vâng, tệ của tôi. thay đổi nó – Qiao

+0

nó không phải là giải pháp hoàn hảo cho vấn đề nêu (gây ra độ dài nên giống nhau), nhưng nó là lý tưởng trong trường hợp của tôi. Và tốc độ nhanh. – Qiao

+3

'strtr' hoạt động tốt với các giá trị thay thế khác với độ dài của giá trị tìm kiếm. Sự khác biệt giữa nó và 'str_replace' là' strtr' sẽ chỉ làm một bản dịch (dài nhất là lần xuất hiện đầu tiên), sẽ nhanh hơn (nhưng với các kết quả khác nhau). Ví dụ: ['ab' => 'c', 'c' => 'd'] sẽ dịch 'ab' thành 'c', trong khi với str_replace nó sẽ trở thành 'd'. – Matthew

1
$keys = array_keys($array); 
$values = array_values($array); 
$text = str_replace($key, $values, $string); 
24
$array_from_to = array (
    'from1' => 'to1', 
    'from2' => 'to2' 
); 

$text = str_replace(array_keys($array_from_to), $array_from_to, $text); 

Trường to sẽ bỏ qua các phím trong mảng của bạn. Chức năng chính ở đây là array_keys.

+1

Wow! Sử dụng rất thông minh các chức năng ở đây. Ngay cả trong năm 2014, công trình này thật tuyệt vời! – arrayown

+1

Cảm ơn bạn @ user1383815 - thời gian trôi qua: cảm thấy như bài đăng này chỉ được dịch chuyển. – mauris

+0

Có thể $ array_from_to được chuyển qua theo thứ tự khác với mảng array_keys() trả về không? – PhoneixS

2
$search = array('{user}', '{site}'); 
$replace = array('Qiao', 'stackoverflow'); 
$subject = 'Hello {user}, welcome to {site}.'; 

echo str_replace ($search, $replace, $subject); 

Kết quả trong Hello Qiao, welcome to stackoverflow..

$array_from_to = array (
    'from1' => 'to1'; 
    'from2' => 'to2'; 
); 

Đây không phải là mảng hai chiều, đó là mảng kết hợp.

Mở rộng trên ví dụ đầu tiên, nơi chúng tôi đặt $ search làm khóa của mảng và $ thay thế làm giá trị, mã sẽ trông như thế này.

$searchAndReplace = array(
    '{user}' => 'Qiao', 
    '{site}' => 'stackoverflow' 
); 

$search = array_keys($searchAndReplace); 
$replace = array_value($searchAndReplace); 
# Our subject is the same as our first example. 

echo str_replace ($search, $replace, $subject); 

Kết quả trong Hello Qiao, welcome to stackoverflow..

3
$text='yadav+RAHUL(from2'; 

    $array_from_to = array('+' => 'Z1', 
         '-' => 'Z2', 
         '&' => 'Z3', 
         '&&' => 'Z4', 
         '||' => 'Z5', 
         '!' => 'Z6', 
         '(' => 'Z7', 
         ')' => 'Z8', 
         '[' => 'Z9', 
         ']' => 'Zx1', 
         '^' => 'Zx2', 
         '"' => 'Zx3', 
         '*' => 'Zx4', 
         '~' => 'Zx5', 
         '?' => 'Zx6', 
         ':' => 'Zx7', 
         "'" => 'Zx8'); 

    $text = strtr($text,$array_from_to); 

    echo $text; 

//output is 

yadavZ1RAHULZ7from2 
Các vấn đề liên quan