質問: ''; //名言の入っている要素を指定 $singulerExpression_noEng ='|(.*)()|'; for($i=0;$i'; } } ``` 出力部分を以下のようにしても同じ出力結果でした。 ``` for($i=0;$i.*|', '', $match[1][$i]).''; } ``` 上記の出力結果 ``` 人間はひとくきの葦にすぎない。自然の中で最も弱いものである。だが、それは考える葦である。Human being is a reed of one stalk. It is the weakest existence naturally. However , it is a thinking reed .その日その日が一年中の最善の日である。チャンスは貯蓄できない。希望さえあればどんな所にでも たどりつけると決心している。死者にたいする最高の手向けは、悲しみではなく感謝だ。人生は道路のようなものだ。 一番の近道は、たいてい一番悪い道だ。世の中は、君の理解する以上に栄光に満ちている。人付き合いがうまいというのは、人を許せるということだ。生きるとは呼吸することではない。行動することだ。人生は学校である。 そこでは幸福より不幸の方が良い教師である。若い女は美しい。しかし、老いた女はもっと美しい。今日という日は、残りの人生の最初の一日。卵を割らなければ、オムレツは作れない。You can't make omelet without breaking eggs.至上の処世術は、 妥協することなく適応することである。人間、志を立てるのに遅すぎるということはない。太陽が輝くかぎり、希望もまた輝く。行動は必ずしも幸福をもたらさないかも知れないが、 行動のない所に、幸福は、生まれない。成し遂げんとした志をただ一回の敗北によって捨ててはいけない。 ``` 私の正規表現の書き方か、ロジックに間違えがあると思います。どうかアドバイスやご指摘のほどをお願いいたします。 以上です。よろしくお願いします。
回答: 英語だけの文書ってstrlenとmb_strlenが一緒だって判断していいなら例えばこう ``` $str=<<hoge hoge hogehoge hoge hoge ほげ hogehoge hoge ほげほげhoge hoge hoge hoge hogehoge hoge eof; $pattern="|(?<=).+(?=)|"; $replacement=function($a){return strlen($a[0])==mb_strlen($a[0])?"":$a[0];}; $str=preg_replace_callback($pattern,$replacement,$str); print nl2br(htmlspecialchars($str)); ```