申し訳ありませんが、一重引用符とアポストロフィの間に違いはありません。それが意味を成すならば、あなたはその2つを区別するために何かを使わなければならないでしょう。あなたが使うことができるヒューリスティックは、アポストロフィの後に1つまたは2つの連続した文字がある場合は、単一引用符で囲まれた文字列ではなく、収縮であると考えることができます。
編集:これは私がお勧めしない愚かなヒューリスティックですが、私はとにかくそれを行いました。
function ucwordsMore ($str) {
$str = str_replace("' ","'",ucwords(str_replace("'","' ",$str)));
return $str;
}
$string = "She's Saying It's Time To 'Find A Solution'.";
$string = ucwordsMore($string);
//string now equals = She'S Saying It'S Time To 'Find A Solution'.
for($i = 0; $i < strlen($string); $i++){
if($string[$i] == "'"){
if($i +2 < strlen($string) && $string[$i] == "'"&& $string[$i+1] != " "&& $string[$i+2] == " "){
$string[$i+1] = strtolower($string[$i+1]); //replace
}
if($i +3 < strlen($string) && $string[$i] == "'"&& $string[$i+1] != " "&& $string[$i+2] != " "&& $string[$i+3] == " "){
$string[$i+1] = strtolower($string[$i+1]); //replace
$string[$i+2] = strtolower($string[$i+2]); //replace
}
}
}
echo $string;
//$string - "She's Saying It's Time To 'Find A Solution'."
魅力的な作品です!ありがとうございました! –
+1 - 一般的に、私は '/ e'修飾子から遠ざかりたいが、これは非常に洗練された解決策である。 – FtDRbwLXw6
Mario、この例ではどうやってpLとuを使いますか?英語以外の文字の手前の文字も大きくなるためです。申し訳ありません...私は正規表現の専門家ではありません... –