2010-03-08 9 views
19

साथ आप str_replace() के साथ सरणियों का उपयोग कर सकते हैं: अगर आप साहचर्य सरणी हैstr_replace() साहचर्य सरणी

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

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

लेकिन क्या?

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

आप str_replace() के साथ इसका उपयोग कैसे कर सकते हैं?
गति मामलों - सरणी काफी बड़ी है।

उत्तर

37

$text = strtr($text, $array_from_to)

वैसे, कि अभी भी एक एक आयामी "सरणी है।"

+0

हाँ, मेरा बुरा। इसे बदल दिया – Qiao

+0

यह कहा गया समस्या के लिए सही समाधान नहीं है (कारण लंबाई समान होनी चाहिए), लेकिन यह मेरे मामले में आदर्श है। और गति तेज है। – Qiao

+3

'strtr' प्रतिस्थापन मूल्यों के साथ ठीक काम करता है जो खोज मूल्य से लंबाई में भिन्न होता है। इसके बीच और 'str_replace' के बीच का अंतर यह है कि' strtr' केवल एक अनुवाद करेगा (सबसे लंबा सबसे पहले मिलान किया जाएगा), जो तेज़ होगा (लेकिन विभिन्न परिणामों के साथ)। उदा।, ['Ab' => 'c', 'c' => 'd'] 'ab' से 'c' का अनुवाद करेगा, जबकि str_replace के साथ यह 'डी' बन जाएगा। – 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); 

to क्षेत्र अपने सरणी में कुंजी ध्यान नहीं देगा। यहां मुख्य कार्य array_keys है।

+1

वाह! यहां कार्यों का एक बहुत चालाक उपयोग। यहां तक ​​कि 2014 में यह खूबसूरती से काम करता है! – arrayown

+1

धन्यवाद @ उपयोगकर्ता 1383815 - समय मक्खियों: इस पोस्ट की तरह महसूस किया गया बस teleported। – mauris

+0

क्या array_keys() वापसी से अलग ऑर्डर में $ array_from_ को घुमाया जा सकता है? – PhoneixS

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

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

Hello Qiao, welcome to stackoverflow. में परिणाम।

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

यह एक द्वि-आयामी सरणी नहीं है, यह एक सहयोगी सरणी है।

पहले उदाहरण पर विस्तार, जहां हम सरणी की चाबियों के रूप में $ खोज डालते हैं, और $ मूल्यों के रूप में प्रतिस्थापित करते हैं, तो कोड इस तरह दिखेगा।

$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); 

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 
संबंधित मुद्दे