2011-12-12 126 views
0

我有一個功能,通過陣列來代替每個字符:獲得的最後一個字符的字符串

function z3($str){ 
    $text=$str; 
    $sr = array(
    'a' => array('A'), 
    'b' => array('B'), 
    ' ' => array(' ') 
); 
    for ($i = 0, $len = strlen($text); $i < $len; $i++) { 
    $news .= $sr[$text[$i]][@array_rand($sr[$text[$i]])]; 
    } 
    $nn=$news; 
    return $nn; 
} 
echo z3("aaa"); 

,我得把它發展到如果字符(a)是硬道理,這是後一個空間,我想添加('s)它。讓我解釋一下:

$str = "aaa aaa aaa"; 
echo z3($str); 

我需要輸出爲AAA's AAA's AAA

+0

ü希望每個單詞,並用''s'任何空間的大寫。我對嗎? – diEcho

+0

所以「酒吧標籤」將轉換爲「BAr的標籤」? – ghoti

+0

非常令人困惑的問題。轉換中有一個strtoupper($ str),並且用空格替換任何字符。 – macjohn

回答

0

str_replace(" ", "'s ", trim($str))

0
function z3($str) { 
    $sr = array(
     'a' => array('A'), 
     'b' => array('B'), 
     ' ' => array(' ') 
    ); 

    $nn = ''; 

    for ($i = 0, $len = strlen($str); $i < $len; $i++) { 
     if($str[$i] == ' ' && isset($str[$i-1]) && $str[$i-1] == 'a') 
      $nn.= "'s"; 
     $nn.= $sr[$str[$i]][@array_rand($sr[$str[$i]])]; 
    } 

    return $nn; 
} 

$str = "aaa aaa aaa"; 
echo z3($str); 
1

這是很難理解你的問題,但如果你希望只撇號添加到的字,其最後一個字符是一個,你必須利用一切,但你不想和使一錘定音佔有慾......

function z3($str) { 

    $parts = explode(' ', $str); 

    for ($i=0; $i < count($parts); $i++) { 
    $parts[$i] = strtoupper($parts[$i]); 
    if (substr($parts[$i], -1) == 'A') { 
     $parts[$i] = $parts[$i] . "'s"; 
    } 
    } 

    $str = implode(' ', $parts); 
    return rtrim($str, "'s"); 
} 

$str = "aaa aaa aaa"; 
echo z3($str); // outputs AAA's AAA's AAA 
0

你要(1)$ SR陣列和每個字符改變其相應的價值(2)如果單詞包含了一個「一」,而不是硬道理,在單詞的結尾添加「s」。

嘗試:

function z3(&$str) { 
     $sr = array(
      'a' => array('A'), 
      'b' => array('B'), 
      ' ' => array(' ') 
     ); 
     $words = explode(' ', $str); // split str into words 
     $numwords = count($words); 
     foreach ($words as $index => &$word) { // run through each word 
      $chars = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY); // split word into characters 
      foreach ($chars as &$char) { // run through each character 
       if (array_key_exists($char, $sr)) { 
        $char = $sr[$char]; // if there is a replacement in $sr array, set $char to its value 
       } 
      } 
      if ($index < $numwords && in_array($sr['a'], $chars) { // if this is not the last word and it contains an 'a', append characters ' and s 
       $chars += array("'", "s"); 
      } 
      $word = implode('', $chars); // pull the words back together 
     } 
     $str = implode(' ', $words); // pull the string back together 
    } 

    $str = 'aaa aaa aaa'; 
    z3($str); 
    echo $str; // echoes AAA's AAA's AAA 
0
function z3($str) { 
    $patt=str_split("ab"); 
    $repl=str_split("AB"); 
    return preg_replace("/ /", "'s ", str_replace($patt, $repl, $str)); 
} 

$str="bar tab"; 
echo z3($str); 

>>> BAr's tAB

相關問題