Typographisch korrekte Anführungszeichen sieht man selten auf Webseiten. Meist kommen Zollzeichen " zum Einsatz.
Diese automatisch zu ersetzen ist keine ganz triviale Aufgabe, da sie ineinander verschachtelt auftreten können und es auch legitime Verwendungen für das Zollzeichen gibt. Man denke zum Beispiel an den 19"-Monitor der kleiner als der 21"-Monitor ist.
Dieses Beispiel funktioniert daher auch nicht 100%ig, kann aber immerhin als kleine Anregung dienen.
<?php
/**
* einfache Zollzeichen durch richtige Anführungszeichen ersetzen
*/
class quotation_marks
{
var $right= '”';
var $left = '„';
function french_quote($v)
{
$pattern = array('/"\b/','/\b"/');
$replacement=array($this->left,$this->right);
return preg_replace($pattern,$replacement,$v);
}
function do_quote($v)
{
return $v[1].$this->french_quote($v[2]);
}
function set_braces($l,$r)
{
$this->left = $l;
$this->right = $r;
}
function set_style($s)
{
switch($s){
case 'french':
$this->set_braces('«','»');
break;
case 'single':
$this->set_braces('‘','’');
break;
case 'double':
$this->set_braces('“','”');
break;
}
}
function quote($v)
{
return preg_replace_callback('/(>|^)([^<]*)/', array($this,'do_quote'),$v);
}
}
$text = <<< EOT
<pre>
Das ist ein "Test", es sollen alle "Zollzeichen" durch richtige
"Anführungszeichen" ersetzt werden.
Aber nicht die in innerhalb von "HTML-Tags" wie
zum Beispiel <a href="http://example.org">bei Verweisen</a>.
"Ich gehe jetzt!", sagte Tim, "und wasche mir die Finger."
Ein kluger Kopf sagte: "Man beachte auch <a href="http://example.org">besondere Schachtelungen</a> im Algorithmus"
"Aber, bei "Tüttelchen" nach einem Satzzeichen klappt es nicht - oder etwa doch?"
Mein 21"-Monitor ist besser als Dein 19"-Monitor.
Aber wenn es nun ein einzelner 19"-Monitor ist?
</pre>
EOT;
$arr = array('default','single','double','french');
$obj = new quotation_marks();
foreach ($arr as $a)
{
printf('<h1>%s</h1>',$a);
$obj->set_style($a);
echo $obj->quote($text);
}
?>