получить последний символ в строке - PullRequest
0 голосов
/ 12 декабря 2011

У меня есть функция для замены каждого символа на массив:

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.

Ответы [ 5 ]

1 голос
/ 12 декабря 2011

Трудно понять ваш вопрос, но если вы хотите добавить апострофы только к словам, чей последний символ - a , и вам нужно было использовать заглавные буквы, кроме ', и вы нене хочу сделать последнее слово притяжательным ...

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 голосов
/ 12 декабря 2011
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

0 голосов
/ 12 декабря 2011

Вы хотите (1) изменить каждый символ на соответствующее ему значение в массиве $ sr и (2) если слово содержит «a» и не является последним словом, добавить «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 голосов
/ 12 декабря 2011
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);
0 голосов
/ 12 декабря 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...