REGEX反向打印每个单词

问题描述

| 有人可以帮我解决一个字符串中每个单词的正则表达式吗? 输入样例:
Hello how are you my friend?
期望的输出
olleH woh era uoy ym ?dneirf
我想在PHP中实现这一点。     

解决方法

        这几乎给您您想要的。 如果距离不够近,请查看Blender爆炸空间的解决方案。
preg_replace_callback(\'/\\b(\\w+)\\b/\',function($match) {
    return strrev($match[1]);
},$str);
键盘。 您可以使用纯正则表达式(和一些字符串函数)来反转文本,但这很丑陋...
$length = strlen($str);

echo preg_replace(
         \'/\' . str_repeat(\'(.)\',$length) . \'/s\',\'$\' . join(\'$\',range($length,1)),$str
     );
键盘。 上面的代码示例仅用于演示。请永远不要使用它:)     ,        抱歉,纯正则表达式无法做到这一点。 这是一个可能有效的PHP脚本:
$exploded = explode(\' \',$string);
$temp = array();

for ($i = 0; $i < count(exploded); $i++) {
  $temp[] = strrev(exploded[i]);
}

$temp = implode(\' \',$temp);
    ,        不是正则表达式,但这可行:
<?php

function reverseWords($text) {
    $words = explode(\' \',$text);
    $c_words = count($words);
    $outtext = \"\";
    for ($i = 0; $i < $c_words; $i++) {
        if ($i !== 0) $outtext .= \" \";
        $length = strlen($words[$i]);
        for ($p = $length-1; $p >= 0; $p--) {
            $outtext .= substr($words[$i],$p,1);
            $start--;
        }
    }
    return $outtext;
}

echo reverseWords(\"This is a test.\");

?>
https://ideone.com/WUtzJ 现在,我忘记了
strrev()
,这样会稍微缩短一点。 编辑 使用
strrev()
<?php

function reverseWords($text) {
    $words = explode(\' \',$text);
    $c_words = count($words);
    $outtext = \"\";
    for ($i = 0; $i < $c_words; $i++) {
        if ($i !== 0) $outtext .= \" \";
        $outtext .= strrev($words[$i]);
    }
    return $outtext;
}

echo reverseWords(\"This is a test.\");

?>
https://ideone.com/NT7A5     ,        如果没有正则表达式,这是极其琐碎的事情,而且我在这里看到了很多庞大的解决方案,所以我想我会发布单行代码:
$rev = implode(\' \',array_map(\'strrev\',explode(\' \',$string)));