2016-01-08 5 views
-3

У меня есть строка:своп первые две буквы каждого слова в строке

Hello, How Are You. 

Я хочу этот вывод:

eHllo, oHw rAe oYu. 

Это не имеет значения, есть ли какие-либо специальные символы, я просто хотите отменить первые две буквы в каждом слове.

+1

Пожалуйста, прочтите [Какие темы я могу спросить ] (http://stackoverflow.com/help/on-topic) и [Как задать хороший вопрос] (http://stackoverflow.com/help/how-to-ask) И [идеальный вопрос] (http://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/) SO ** - не бесплатное кодирование ** Вы должны показать, что приложили решить свою проблему. – RiggsFolly

+0

Что вы пробовали до сих пор. Отправьте свои попытки –

ответ

1

Вы можете использовать preg_replace_callback вроде как

$str = "Hello, How Are You."; 
echo preg_replace_callback("/([a-z]+)/i",function($m){ 
    return implode(array_map('strrev',str_split($m[0],2))); 
},$str); 

Выход:

eHllo, oHw rAe oYu. 

Demo

-1

Оно должно быть:

$input = "Hello, How Are You."; 
$newstrarr = array(); 

foreach (str_split($input) as $index => $char){ 
    if($index & 1) { //odd 
     $newstrarr[$index-1] = $char; //place odd characters 1 place to the left 
    } else { //even 
     $newstrarr[$index+1] = $char; //place even characters 1 place to the right 
    } 
} 
$newstr = ""; 

for ($x = 0; $x < (count($newstrarr) -1); $x++) { 
    $newstr .= $newstrarr[$x]; // build the string from the array 
} 

echo $newstr; 
+1

Это не похоже на границы слов, как в вопросе –

+0

@TomislavMuic цитата из вопроса:> Неважно, есть ли какой-либо особый символ –

Смежные вопросы