2009-07-23 9 views

Antwort

6

Dies sollte funktionieren:

$words = explode(' ', $string); 
$words = array_map('strrev', $words); 
echo implode(' ', $words); 

Oder als Einzeiler:

echo implode(' ', array_map('strrev', explode(' ', $string))); 
+0

+1: Der array_map ist eine nette Geste! –

+3

knahT uoy: o))) – deceze

2
echo implode(' ', array_reverse(explode(' ', strrev('my string')))); 

Dies ist erheblich schneller als jede Zeichenfolge des Arrays nach dem Explodieren der ursprünglichen Zeichenfolge umkehren.

+0

Richtig, da Array-Funktionen schneller als String-Funktionen sind. Ist es wichtig? Nicht, wenn Sie nicht gleichzeitig einige Milliarden Saiten umkehren. – deceze

0

Dies sollte den Trick:

function reverse_words($input) { 
    $rev_words = []; 
    $words = split(" ", $input); 
    foreach($words as $word) { 
     $rev_words[] = strrev($word); 
    } 
    return join(" ", $rev_words); 
} 
+0

'split()' ist Teil der POSIX Regex-Erweiterung und wird in PHP 5.3.0 zugunsten von Perl-Compatible Regex (PCRE) veraltet. Aber du brauchst sowieso keine Regex, du brauchst nur 'explode()'. –

+0

Ah, gut zu wissen, danke. –

0

ich tun würde:

$string = "my string"; 
$reverse_string = ""; 

// Get each word 
$words = explode(' ', $string); 
foreach($words as $word) 
{ 
    // Reverse the word, add a space 
    $reverse_string .= strrev($word) . ' '; 
} 

// remove the last inserted space 
$reverse_string = substr($reverse_string, 0, strlen($reverse_string) - 1); 
echo $reverse_string; 
// result: ym gnirts 
1

Functionified:

<?php 

function flipit($string){ 
    return implode(' ',array_map('strrev',explode(' ',$string))); 
} 

echo flipit('my string'); //ym gnirts 

?> 
Verwandte Themen