Zastępowanie głupich cudzysłowów dla inteligentnych cudzysłowów za pomocą preg_replace

Próbuję zamienić głupie cytaty na ich inteligentny odpowiednik. Więc chcę się odwrócićJane said 'How do we do this?' 'I don't know' replied Sam. wJane said ‘How do we do this?’ ‘I don’t know’ replied Sam. na przykład.

Apostrof wdon't jest proste.preq_replace z wzorem/(\w+)'(\w+)/ znajdzie apostrofy wewnątrz słów. Ale nie mogę zamienić cytatów poprawnie. Obecnie mam:

$singlequotesPattern = "/'(.*)'/";
$singlequotesReplacement = "‘$1’";

$singlequotes = preg_replace($singlequotesPattern, $singlequotesReplacement, $text);

Ale to nie powiedzie się z powyższym zdaniem i powodujeJane said ‘How do we do this?' 'I don't know’ replied Sam. Pasuje tylko do najbardziej zewnętrznych cudzysłowów. Jak mogę sprawić, że zastąpi obie pary cudzysłowów?

questionAnswers(1)

yourAnswerToTheQuestion