
No.3ベストアンサー
- 回答日時:
pregで厳密に行う場合はu修飾子をつけてください
<?PHP
mb_internal_encoding("UTF8");
$abc="a、b、cなど。";
$aiu="あ、い、うなど。";
$pattern="/(^[^な]+).+/u";
$replacement="$1";
print preg_replace($pattern,$replacement,$abc)."<br>";
print preg_replace($pattern,$replacement,$aiu)."<br>";
?>
No.2
- 回答日時:
ereg系の関数は戻り読みができなかったかもしれません
preg_replaceではどうでしょう?
(日本語処理を正確にするにはUTF8しばりになりますが)
<?PHP
$pattern="/a(?!i)|(?<!a)i|[^ai]/";
$replacement="_";
$array=array("xaiy","aau","aiu","ai","a","aiueoaiaioioia");
foreach($array as $val){
print $val."→".preg_replace($pattern,$replacement,$val)."<br>";
}
ご回答ありがとうございます。
preg_replaceは使ったことがないので、勉強してやってみたいと思います。
PHPマニュアルのpreg_replaceのページを読みましたが、preg系正規表現の仕組みがあまり理解できませんでした。
自分でも以下のコードを書いてみたのですが、なぜeregとpreg、"abc"と"あいう"で処理が異なるのか理解できておりません。
$abc="a、b、cなど。";
$aiu="あ、い、うなど。";
$abc_ereg=mb_ereg_replace('(^[^な]+).+','\\1',$abc);
$abc_preg=preg_replace('/(^[^な]+).+/','${1}',$abc);
$aiu_ereg=mb_ereg_replace('(^[^な]+).+','\\1',$aiu);
$aiu_preg=preg_replace('/(^[^な]+).+/','${1}',$aiu);
$abc_eregの結果は、a、b、c
$abc_pregの結果は、a
$aiu_eregの結果は、あ、い、う
$aiu_pregの結果は、あ、い、うなど。
preg系正規表現の参考サイトで、プログラミング初修者にも分かり易いものがあれば是非ご教示ください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- Excel(エクセル) エクセルで2つの表を比較して、文字列が同じだが、その行のある値が違うものを抽出したい 1 2022/10/06 21:48
- PostgreSQL 数値が定期的にあらわれる文字列から、いくつめに出現した数値が指定して切り出したい 1 2023/06/08 13:12
- Excel(エクセル) エクセル関数の変わった使い方 3 2022/05/13 17:12
- Excel(エクセル) エクセルで重複データから重複を削除して指定の列に抽出したい 11 2022/05/11 11:26
- その他(プログラミング・Web制作) テキストエディタで複数行にわたる文字列の行頭に番号を振る方法 4 2023/03/11 12:57
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- Excel(エクセル) Excelの文字列を数字に変換する方法について 6 2023/07/31 21:18
- Excel(エクセル) Indirect関数について、Formulatextで抽出した数式を参照したい。 1 2022/12/15 11:16
- Excel(エクセル) Excelの関数についておしえてください。 3 2023/04/20 18:36
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
正規表現
-
VB.NET 文字コード
-
PHP VS Java (パフォーマン...
-
PHPでjavascriptを書き出すとき...
-
PHPで文字列の照合
-
独自タグに囲まれた文字列の変換
-
ダブルコーテーション(
-
誤字脱字はご了承ください^^
-
sedでの最短一致の書き方
-
str_replaceで文字化け
-
【PHP 正規表現を使って文字列...
-
VBAのコマンドボタンの文字列の...
-
ソースコードの1行が長いとき...
-
メッセージボックスで1025文字...
-
VBAを使ってHTMLソースから特定...
-
文字の入力で横バー上段、中断...
-
Excel関数「COUNTIF」で”文字”...
-
全角括弧と全角読点の間隔を狭...
-
エスケープ文字の復帰(¥r)と...
-
C++で空Enterの入力を判...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ダブルコーテーション(
-
文字列の置換をCStringで(C++)
-
VBSで"をエスケープする文字は?
-
○分から○時間○分に変換
-
php 正規表現で、\\マークを取...
-
ダブルクォーテーションが置換...
-
入力文字に\\マークが入ってい...
-
mcryptで英数字(12未満)のみに...
-
$text = "
-
正規表現で<BR>の行を除外した...
-
文字列のアスタリスク置換
-
マクロ関数 #define の効果は何...
-
c# string型の変数に、ダブルク...
-
文字列の括弧について(初心者)
-
dirnameでパスが正しく取れない...
-
PHPで任意の数の行抽出
-
不規則なaタグのスクレイピング...
-
誤字脱字はご了承ください^^
-
キーワードをハイライトさせた...
-
近似した文字列を置換するエク...
おすすめ情報