Intereting Posts

заменить английские котировки на немецкие котировки

есть ли способ реализации немецких котировок (так называемый «Gänsefüßchen»)

„ („) and “ (“) 

в функции для преобразования английских строк, например

Я говорю «Hallo»

в

Я говорю «Hallo»

& bdquo должен применяться только в начале, & ldquo в конце строки.

Solutions Collecting From Web of "заменить английские котировки на немецкие котировки"

Вот функция, проверена и работает нормально.

Примечание: & 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')); 

Как насчет:

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

Он заменяет все равно количество котировок на „“ .

Вы можете сохранить заменяющее «состояние», в котором вы находитесь. Сначала вы всегда заменяете цитату &bdquo , тогда вы устанавливаете флаг, и если этот флаг является истинным, вы заменяете цитату с помощью &rdquo а затем вы отключите флаг. Повторение.

Вы можете сделать это также с помощью CSS- котировок :

 quotes: "„" "“" "‚" "'"; 

пример

Если у вас всегда есть промежуток времени, который вы хотите заменить, вы можете сделать это так

str_replace ('\ "', '' ', $ input);