将英语引号替换为德语引号

时间:2011-06-03 08:47:06

标签: php internationalization replace

有没有办法实施德国报价(所谓'Gänsefüßchen')

„ („) and “ (“)

在函数中转换英文引用的字符串,如

  

我说“你好”

  

我说“你好”

& bdquo应该只在开始时应用,并且在字符串的末尾添加& ldquo。

5 个答案:

答案 0 :(得分:5)

怎么样:

$input  = 'I say "Hallo".';
$output = preg_replace('/"(.*?)"/', '„$1“', $input);

它会将所有偶数引号替换为„“

答案 1 :(得分:2)

您可以存储您所在的替换“状态”。首先,您始终用&bdquo替换引号,然后设置一个标志,如果该标志为true,则用&rdquo替换引号然后你关闭旗帜。重复。

答案 2 :(得分:2)

你也可以使用CSS属性quotes

quotes: "„" "“" "‚" "‘";

Example

答案 3 :(得分:2)

这是功能,测试并且工作正常。

注意:& bdquo开头只应用 ,而且只在字符串末尾显示& rdquo。 (hsz的解决方案不遵循该规则)

function germanquotes($text){
    $size = strlen($text);
    $i=0;
    $replace = array();
    $replace['one'] = array();
    $replace['two'] = array();
    while($i < $size)
    {
        if($text[$i] == '"')
        {
            if($text[$i-1] == " " || empty($text[$i-1]))
            {
                    $replace['one'][] = $i;
            }
            elseif($text[$i+1] == " " || empty($text[$i+1]))
            {
                $replace['two'][] = $i;
            }
        }

        $i++;
    }

    $y = 0;
    $it = 0;
    foreach($replace['one'] as $ghh)
    {
        $text = substr_replace($text, '&bdquo;', ($ghh+$y), 1);
        $y += 6;
        $it++;
    }

    $to=0;
    $i=1;
    $u=1;
    foreach($replace['two'] as $ghhd)
    {
        $text = substr_replace($text, '&rdquo;', ($ghhd-1+$to+((8*$i)-($u*1))), 1);
        $i++;
        $u +=2;
        $to +=6;
    }

    return $text;
}

测试:

echo(germanquotes('I am "glad" to write "functions" for "stackoverflow" users'));

答案 4 :(得分:1)

假设你总是有一个“你想要替换的空间”,你可以像这样做

  

str_replace('\“','”',$ input);