こんにちは。preg_replace の動作がおかしいので困っています。
正規表現でマッチした場合、置き換えられた文字列の前後に、置き換えられる前の文字列が残っています。
古い文字列
"ねこ温泉に行く"
新しく置き換えられた文字列
"Dog or Cat Hot Spring"
ところが、結果は
"ねDog or Cat Hot Springに行く"
と表示されます。
FireFox, Safari のスクリーンショット画像も同じ現象です。
preg_replace でエラーが出てないかのチェックも、プログラムに含まれていますが、エラーは出ていません。
php
1<?php 2function replace_001($subject){ 3 4 $pattern = "/[いぬ|ねこ]温泉/u"; 5 $replacement = "Dog or Cat Hot Spring"; 6 $result = preg_replace($pattern, $replacement, $subject); 7 8 // エラーに備える 9 // 置き換えられた値を返す 10 if (is_null($result)) { 11 return "エラー:" . preg_last_error(); 12 } else if ($result == $subject) { 13 return "マッチしなかった"; 14 } else { 15 return $result; 16 } 17} 18// 英語に 19$onsen_01 = "ねこ温泉に行く"; 20$onsen_02 = "くま温泉に行く"; 21$onsen_ty_01 = replace_001($onsen_01); 22$onsen_ty_02 = replace_001($onsen_02); 23echo "{$onsen_01}--は、次のようになります。\n"; 24echo $onsen_ty_01, "\n"; 25echo "{$onsen_02}--は、次のようになります。\n"; 26echo $onsen_ty_02, "\n"; 27?>
mac OS Mojave---最新
Firefox---最新
Safari---最新
MAMP---ver 5.3
php---version 7.3.1
MySQL---ver 5.7.25
回答1件
あなたの回答
tips
プレビュー