トップページ⇒php
1001コメント313KB

正規表現道場@2ch Part3 s/煽り|荒らし/あぼーん/g

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん03/11/19 21:42ID:Kst3Nn4S
Perlに限らずスクリプト系言語で大活躍の正規表現。
このスレは有用そうな正規表現を紹介したり、どう表現したらいいかわからないときに質問をしたりするためのスレッドです。
質問するときは使用言語や得たい結果をなるべく詳しく書きましょう。

註:& や " を書くときには、&amp " と描いておきましょうね。

Perlメモ
 http://www.din.or.jp/~ohzaki/perl.htm
正規表現メモ
 http://www.kt.rim.or.jp/~kbk/regex/regex.html
Regex::Diagram.pm
 http://www.cc.rim.or.jp/~midorin/mad-p/RegexDiagram.html
正規表現
 http://www.cc.rim.or.jp/~midorin/mad-p/perl/benkyou/PRC2kRegex/
UNIX正規表現入門 目次
 http://www01.u-page.so-net.ne.jp/jc4/hiroyuki/rex_index.html
Regular Expression(Riue ちゃんの正規表現講座) - Index
 http://www.sixnine.net/regexp/

ほとんどは↓のリンク集にまとまっています。
正規表現最新リンク集2002
 http://www2.famille.ne.jp/~akio1998/l_grep.html

過去スレ
正規表現道場@2ch
 http://pc.2ch.net/test/read.cgi/php/996105815/
正規表現道場@2ch Part2
 http://pc2.2ch.net/test/read.cgi/php/1038146241/
0670nobodyさん04/09/05 17:08ID:VHVjccb7
phpで第二空白から第三空白までの文字列取得したいんですが、
どのような方法ありますか?
aaaaaa aaaaa aaaaaaaaaaaaa aaaa aaaaa
         |← ここです →|
0671nobodyさん04/09/05 18:32ID:???

空白を正規表現で何て書くか分かったら解決な。
0672nobodyさん04/09/05 19:42ID:???
正規表現使うより
スペースでexplodeしたほうがいいんじゃないの?
0673nobodyさん04/09/06 07:17ID:???
>>672
$a = array_slice(explode(" ",$aaaaa), 2, 1);
これでいいですか。
0674nobodyさん04/09/06 18:07ID:???
>>673
そこまで分かっているなら試せばよかろう・・・
0675nobodyさん04/09/07 09:23ID:Z5/Re9xz
<a href="../test/read.php/bbs/1234567890/10" target="_blank">>>10</a>
や
<a href="../test/read.php/bbs/0987654321/155" target="_blank">>>155</a>
xxxxxxxxxx.datから上記のようなアンカーリンクを>>10のようにしたい。
どなたかお願いします。
0676nobodyさん04/09/07 09:24ID:Z5/Re9xz
?a href="../test/read.php/bbs/1234567890/10" target="_blank">&gt;&gt;10</a>
や
?a href="../test/read.php/bbs/0987654321/155" target="_blank">&gt;&gt;155</a>
xxxxxxxxxx.datから上記のようなアンカーリンクを>&gt;0のようにしたい。
どなたかお願いします。
0677nobodyさん04/09/07 13:36ID:???
>>675-676
サパーリ意味ワカンネ
0678nobodyさん04/09/07 14:23ID:???
>>675-676
同じくマッタク意味ワカラン
0679nobodyさん04/09/07 16:33ID:???
>>675は専用ブラウザのログの減量化を目論んでおり
スレ内アンカーのAタグを削除すればかなり効果があると睨んでいる。
専用ブラウザのためAタグが無くともポップアップするので困らないと思ったのだろう。
そしてアンカーを削除することに成功し、ポップアップしないことを確認し
今度は「それを元に戻す正規表現を教えて下さい」と質問しに来るのだ。
0680nobodyさん04/09/07 17:22ID:???
意味がわからん、もっと分かりやすく説明してくれ
0681nobodyさん04/09/07 17:44ID:???
簡潔に言えば、「Datからアンカーを除去したい」だろ。
自分でやれよそれくらい。>>1
0682nobodyさん04/09/07 17:49ID:???
アンカー消すのか?
いいのか?
2chブラウザはアンカー自動でして無いと思うけど
dat直読みだろ。それでいいのか?
それなら簡単に消せるだろうが、なんに使うのか
0683nobodyさん04/09/09 09:11ID:???
質問です。

「2ch」をアドレスに含まない「http」で始まるリンクにマッチさせることはできますか?
オートリンクで挿入されたリンクを対象にしています。

<a [^>]+(!?2ch)[^>]+>http
こんな感じかなあとやってみたのですが、出来ませんでした。
0684↑04/09/09 09:13ID:???
書き忘れ。

マッチする場所は問いません。
0685nobodyさん04/09/09 20:10ID:???
漏れなら、正規表現ひとつで済まさずに、
「http:// でマッチ」→「2ch にマッチしたら飛ばす」→「処理」、とかするかなあ。
068668304/09/09 21:31ID:???
回答ありがとうございます。

$regexp = <STDIN>;
if($log =~ /$regexp/){

perlで上記のような感じになってるんで半分諦めていますが、
できるものなら高度な正規表現を使ってみたいと思った次第なのです。
Perl5.8.2で使える正規表現で何かいい表現はありますか?
0687nobodyさん04/09/10 10:41ID:???
>>683
<a (?![^>]*2ch)[^>]+>http
068868304/09/10 10:46ID:???
>>687
希望どおりにマッチしました。
[^>]を中に入れてしまえばよかったんですね。
あと ?! と !? 間違ってましたね。。。
ありがとうございました。
0689nobodyさん04/09/13 00:58:55ID:???
perlですが、
URLにマッチさせる際、正確に(https://とかにも)マッチするようにしたいのですが、
どうすれば一番簡潔に決められますか?

あと、メアドと電話番号のそれぞれをmailto:とteltoに置き換えたいのですが、どうすればよいか思い浮かびません。
英数@英数とかにすると電話番号@〇〇.ne.jpとかが判別できないので…

よろしくお願いしますm(_ _)m
0690nobodyさん04/09/13 02:41:38ID:???
>>689
URL: http://www.din.or.jp/~ohzaki/perl.htm#httpURL
メールアドレス: http://www.din.or.jp/~ohzaki/perl.htm#Mail
電話番号: >>594-602
0691???にマッチさせるには?04/09/14 23:26:21ID:Kd7HVFLL
「ID:???」(あるいは「???」)にマッチするか判定する正規表現はどう書きますか?

$id =~ /ID:???/
とすると、エラーになりました。↓
Nested quantifiers in regex; marked by <-- HERE in m/ID:??? <-- HERE /

WindowsXPでActivePerlを使用しています。
0692nobodyさん04/09/14 23:30:02ID:???
>>691
エスケープ
0693nobodyさん04/09/14 23:41:29ID:???
>>691
エラーメッセージ見てわかってくれよ・・・
069469104/09/14 23:56:41ID:Kd7HVFLL
>>692-693
できました。ありがとうございました。
0695nobodyさん04/09/19 15:59:53ID:???
正規表現を表示するフォントで見やすいものありますか?
等幅のゴシックかなあ・・・。
0696nobodyさん04/09/19 23:14:45ID:???
>>695
http://pc5.2ch.net/test/read.cgi/tech/1032261438/
http://pc5.2ch.net/test/read.cgi/prog/1090997542/
0697nobodyさん04/09/20 10:26:19ID:???
>>696
THX!
上のスレの>>55がめちゃくちゃ役に立ったよ。
0698nobodyさん04/09/22 17:13:59ID:JesDYCu3
#含む#以降の文字列にマッチさせるにはどうすればよいでしょうか?

あと、[email protected]みたいなメアドを電話番号と区別するにはどうすればよいでしょうか?
(電話番号はtel:メアドはmailto:にしたいのです)

よろしくお願いしますm(_ _)m
0699nobodyさん04/09/22 17:46:51ID:???
> #含む#以降の文字列にマッチさせるにはどうすればよいでしょうか?
$'

> あと、[email protected]みたいなメアドを
> 電話番号と区別するにはどうすればよいでしょうか?
$`
0700nobodyさん04/09/23 02:56:01ID:???
このスレって丸投げもOKになった?
0701nobodyさん04/09/23 04:38:16ID:???
>>700
最初から OK だよ。

但し、丸投げとバレた時点でアウト、というルール。
0702nobodyさん04/09/26 07:43:52ID:FGVvy0I6
hoge12234.jpg
みたいなファイルネームの文字列から数字の部分だけを取り出して変数に代入したいんですが、どのようにすればいいんでしょうか?
0703nobodyさん04/09/26 07:50:03ID:???
>>702
>>1
0704nobodyさん04/09/26 07:57:37ID:FGVvy0I6
1のどれ見ればいいのですか?
0705nobodyさん04/09/26 08:00:19ID:???
>>704
何故にそこまで指定せにゃならんのだ
ヒント与えてやってんだから自分で探せよ
0706nobodyさん04/09/26 08:01:04ID:???
>>704
> このスレは有用そうな正規表現を紹介したり、どう表現したらいいかわからないときに質問をしたりするためのスレッドです。
> 質問するときは使用言語や得たい結果をなるべく詳しく書きましょう。

>>701も見てみろ
0707nobodyさん04/09/26 08:04:00ID:???
道場ですから
0708nobodyさん04/09/26 08:04:27ID:FGVvy0I6
>どう表現したらいいかわからないときに質問をしたりするためのスレッドです。
>質問するときは使用言語や得たい結果をなるべく詳しく書きましょう。
て書いてありますね。
使用言語はperlです。
0709nobodyさん04/09/26 08:15:50ID:???
> 700 名前:nobodyさん 投稿日:2004/09/23(木) 02:56 ID:???
> このスレって丸投げもOKになった?


> 701 名前:nobodyさん 投稿日:2004/09/23(木) 04:38 ID:???
> >>700
> 最初から OK だよ。

> 但し、丸投げとバレた時点でアウト、というルール。

ちょっとは自分で努力しなさい。
やった結果がうまく出来なかった場合、漏れたちがアドバイスをしよう。
0710nobodyさん04/09/26 08:26:31ID:FGVvy0I6
考えたのは
ファイル名を一文字ずつ分解して配列変数に入れて、一つずつ0-9に該当するか見ていって、該当したらスカラー変数に入れてくっつけていく。
いかにも効率がわるいですが、どうすればいいですか?
0711nobodyさん04/09/26 08:28:13ID:???
何のために正規表現があるのかと
0712nobodyさん04/09/26 08:31:49ID:???
正規表現理解しろよ
0713nobodyさん04/09/26 08:33:31ID:FGVvy0I6
だから、どう表現していいのかわからないので教えてください。
ということで書き込みしてるわけですが。
0714nobodyさん04/09/26 08:36:37ID:???
ちょっとは自分で努力しなさい。

ってループしてる…
0715nobodyさん04/09/26 08:42:00ID:???
>>1のリンク先見ろって言ってんのがわからないかなぁ
見た上で>>710みたいに考えてるんだったらやり手だね
0716nobodyさん04/09/26 08:51:07ID:???
てか釣りだろ、放置汁
0717nobodyさん04/09/26 08:51:53ID:FGVvy0I6
>>715
さっきから、誰に向かって、書いてるつもりなの?
こんな質問スレで、自分にだけわかる言葉でレスつけても仕方ないと思うんだけど、
まさしく>>715はバカの壁ってやつですね。
0718nobodyさん04/09/26 08:54:57ID:???
やっぱ釣りか
さーて釣り宣言まだかな
0719nobodyさん04/09/26 08:57:36ID:FGVvy0I6
時間が悪かったみたいですね。
残念。
0720nobodyさん04/09/26 08:58:39ID:???
よくある光景だなぁ
0721nobodyさん04/09/26 09:00:45ID:???
正規表現スレで>>710な発言してる時点でいつ来ても同じだな
0722あぼーんNGNG
あぼーん
0723nobodyさん04/09/28 15:15:15ID:???
[:graph:]に日本語が該当しないのは仕様ですか?
キーワード処理に便利なんですが。
0724nobodyさん04/09/28 17:57:22ID:???
>>723
仕様です。
072572304/09/28 18:52:44ID:???
>>724
ありがとうございます。
0726nobodyさん04/09/29 02:49:00ID:???
_
0727nobodyさん04/10/01 01:34:03ID:???
数値のみをマッチさせるにはどうしたらいいですか?
アルファベット等がどこかに含まれたらマッチしない表現を考えています。
言語はPerlです。
1
10
-10
0.101
100.1
-1000.01
桁数固定なら深く考えることもないのですが、上みたいなマイナスが入ったり小数点が動いたりする可能性を考えたらわからなくなってしまいました。
0728nobodyさん04/10/01 14:00:54ID:???
こんなんどうだろう。
^-?[0-9]+(\.?[0-9]+|[0-9]*)$
0729nobodyさん04/10/01 14:05:48ID:???
ミス。^-?[0-9]+?(\.[0-9]+|[0-9]*)$

しかし汚ねーなあ。たぶんググればまともなの出てくるよ。
0730nobodyさん04/10/01 14:12:08ID:???
>>729
数字の読み方としてはそれもありだが、正規表現的にはコレで十分

/-?[0-9]+(\.?[0-9]+)?/

8進数マッチするけどいいんだよね
0731nobodyさん04/10/01 14:13:33ID:???
コピペしたらおんなじミスしたw

/-?[0-9]+(\.[0-9]+)?/
0732nobodyさん04/10/01 14:19:08ID:FcpwUMKG
-
0733nobodyさん04/10/01 14:56:15ID:???
aaaaa0.1aaaaa にマッチするよ

.5 とかもあるだろ?
0734nobodyさん04/10/01 15:02:38ID:???
なんか初心者が・・・
0735nobodyさん04/10/01 15:03:27ID:???
>>733
反例は正規表現でお願いします。
0736nobodyさん04/10/01 15:08:12ID:???
.5 みたいな表記はステでいいんじゃないの?
>>727が判断することだけど。

# Perlスレでは確か「n進数や指数はどうよ?」でブームが終わったような。
073773304/10/01 15:10:26ID:???
これは?
/^-?\d*(?:\.?\d+)?$/
0738nobodyさん04/10/01 15:11:04ID:???
まあ井川のサインボールでも見てリフレッシュしろよ
http://2chart.fc2web.com/2chart/igawa.html
0739nobodyさん04/10/01 15:12:00ID:???
>>737
・・・・・・・・・。
074073304/10/01 15:12:51ID:???
あっ!やっぱ間違えた。。。空文字にマッチしてしまう。。
0741nobodyさん04/10/01 15:14:01ID:???
放置しろ。
0742nobodyさん04/10/01 17:19:34ID:???
/^-?(0|[1-9]\d*)(\.\d+)?$/
074372704/10/01 21:36:43ID:???
こんばんは。
いくつもありがとうございます。
>>733
.5のような表記は無しです。
試してみたところ>>729 >>742が目的にあった動作をするようなので使ってみます。
みんな良く調べて何が違うのが勉強してみます。
正規表現、便利だけど難しいですね
0744nobodyさん04/10/02 16:22:06ID:???
$mes = ereg_replace('([^[:graph:]])([[:alpha:].]{2,})([^[:graph:]])',
'\1<a href="keyword.php?q=\2">\2</a>\3', ' ' . $mes);

こうやって、URLの可能性がないアルファベットの連続をキーワードとしてリンクさせたいのですが、
これだとスペース置きにキーワードが並んだ場合、どちらかしか replace されません。
MSN Messenger など MSN と Messenger 両方にマッチさせたいのですが、
何か良い方法はありませんでしょうか。
0745nobodyさん04/10/03 02:24:24ID:???
ereg_replace('([[:alpha:].]{2,})((?=[^[:graph:]])|$))',
'<a href="keyword.php?q=\1">\1</a>', ' ' . $mes)

とりあえず、これでいいと思う。
自分はURLを「http:」で始まる単語としたくて、
(?<!http:)([^\s]{2,})
でやってみたけど、
[^\s]が全部取っちゃうようでうまくいかなかったorz
0746nobodyさん04/10/03 02:25:54ID:???
スマソ。括弧を1つ取るの忘れた。
×((?=[^[:graph:]])|$)) ○((?=[^[:graph:]])|$)
074774404/10/03 04:57:52ID:???
>>745-746
回答ありがとうございます。

XREA を利用しているので PHP の 4.3.8 を利用しているのですが、
Warning: ereg_replace(): REG_BADRPT が出てしまいました
(いろいろ試したみたところ、 (?= に反応しているようでした)。
preg mb_ereg でも同様のコードを試してみたところ (?= はパスするものの
ereg と違って [:graph:] に日本語がマッチしてしまうようです(こっちが正しいのかな?)。

745のコードを参考に mb_ereg で以下のように書き直してみたところなんとか動作しました。

$mes = mb_ereg_replace('([a-zA-Z.]{2,})((?=[^a-zA-Z0-9<>":;.,/=?+_&@\-])|$)',
'<a href="keyword.php?q=\1">\1</a>', $mes);

よくわからないのですが、[:alpha:]を使うと漢字にマッチしたりして挙動が変になっていました。

うーん、まだまだ勉強が必要です。
0748nobodyさん04/10/03 05:14:58ID:???
eregはPosix拡張、pregはPerl拡張。
0749nobodyさん04/10/03 05:29:07ID:???
正規表現ライブラリがちがううんだよ。PHPマニュアルにも書いてあるが、
例によって>>1の正規表現メモんとこ参照すると分かりやすい。
0750nobodyさん04/10/03 22:20:30ID:???

あるシステムの独自タグをあつかっています。

<XXXX Name = Test1 number = 1 value1 = "テスト" value2 = "テスト\"ああ\"" value3="テスト3 \t test">
</XXXX>

という具合に、<XXXX で始まるタグの中にかかれた各属性と値をそれぞれ分割したいのです。最初、Javaプログラムで頑張って書いていましたが、
へたれな自分のプログラムが長くなってしまいバグも所々に…。くせものが属性と値の表記で、valueというキーの値がaaaa としても、
value = aaaa の場合
value = "aaaa" の場合で異なる値にしたい(" がポイント)
value=aaaa や、途中で改行やタブが入る、
value=
aaaa
といった場合もあります。

値の中に、ダブルクォーテーションが入る場合やスペースが入った場合を考慮してJavaプログラムで何とかしようと思ってましたがスパゲッティ状態です。

正規表現でエイヤっと属性名と値で分割させたいのですが、、、>>1のサンプルをあさってますが、もし、何か良いモノ知っていましたら教えてください。
075175004/10/03 22:21:42ID:au5XkXk9
ageときます。スマン
0752nobodyさん04/10/04 01:59:41ID:???
>>750
その独自タグの仕様をはっきりさせなければ誰もわからんよ。
「=」の隣にスペースが入っていたりダブルクォートでくくっていたり
いなかったりしてるし。
0753nobodyさん04/10/04 02:00:16ID:???
s/<XXXX[\n\s]+([^>]*)>(.|\n)*<\/XXXX>/$1/g;
/(.+?)[\n\s]*=[\n\s]*("(\\"|[^"])+"|[^\s]+)(?:[\n\s]+|$)/; #$1=属性, $2=値

やっとできた・・・。
\"を含める方法とか、勉強になりました。
075475304/10/04 02:10:49ID:???
>>752
そうだ、
>value = aaaa の場合
>value = "aaaa" の場合で異なる値にしたい(" がポイント)
これがどういう結果を望んでいるのか分からないままやってたw

とりあえず、ダブルクォートは残す仕様にしておいたけど。
075575004/10/04 07:43:16ID:3m/jnQ5F
ありがとう〜(;´д`) とりあえず、ためしてみます。。

>>752にあるように、= の両隣は、スペースが入ったり、入らなかったりします。厳密にはJavaでいうところのホワイトスペースを許可してて、タブとか全角スペースなどもありです。ここは許可しないことを改善してもらうつもりです。
あとで結果報告しますね。ありがとう〜
0756nobodyさん04/10/04 11:31:31ID:???
可能であれば、独自な形式でなくて、
みんなが使ってるフォーマット (XML ね) にしてもらうようにした方が良いと思う。
0757nobodyさん04/10/04 15:15:50ID:???
同感。あとちゃんとtokenizeすればスパゲッティにはならんでしょ、このくらい。
0758nobodyさん04/10/11 11:12:51ID:ek9GJkPH
質問させてください。
EZwebの絵文字をShift_JISコードに変換する正規表現を書いたつもりなのですが、
”♪”マークなど一部の絵文字以外の記号にマッチしてしまいます・・・。

(使用言語:PHP 4.3.3)
$sjis='[\x81-\x9F\xE0-\xF7\xFA-\xFC][\x40-\x7E\x80-\xFC]|[\x00-\x7F]|[\xA1-\xDF]';
$text=preg_replace("/((?:$sjis)*)([\xf3-\xf7][\x40-\xfc])/e","'\\1['.bin2hex('\\2').']'",$text);

EZweb絵文字だけにマッチさせるようにするには、どうのように直したら良いでしょうか?
よろしくお願いします。

0759nobodyさん04/10/12 01:28:24ID:???
(?:$sjis)*のところ、(?:$sjis)*?にしないと全部取っちゃうよ。
そこら辺は大丈夫?
076075904/10/12 01:34:03ID:???
ああ、そうか。
[顔文字]♪
のパターンが良くないのね。
今まで
♪[顔文字]
でやってたから気づかなかった。

言い訳だけど、具体的にどういうパターンがダメなのか書いてほしかったな。
076175904/10/12 03:17:53ID:???
[\xf3-\xf7][\x40-\xfc]は絵文字の文字コードってことで良いかな。
sjisの漢字の範囲は[\x81-\x9F\xE0-\xEF][\x40-\x7E\x80-\xFC]じゃない?

てなわけで、とりあえずこれ。
/($sjis)([\xf3-\xf7][\x40-\xfc])/e

でも、これでは絵文字が連続した場合は変換できない。

やはり、どこが1バイト目か2バイト目か分かるように、
あらかじめ明確に文字を区切らなきゃいけないっぽい。

$text = preg_replace("/($sjis)/", "$1 ", $text);
$text = preg_replace("/([\xf3-\xf7][\x40-\xfc])\s/e", "'['.bin2hex(\\1).'] '", $text);

こんな感じにすれば確実。もっといい方法あれば良いんだけど。
PHPはやったことないので、細かい間違いはご容赦・・・。
0762nobodyさん04/10/12 14:09:22ID:oX6FVXHm
正規表現のプロの方々のお力をお借りしたく、質問をさせてください。

perl のマッチングで文章中の全角数字を的確に取得したいのですが、
どうにもこうにも化けてしまいます。

$value = "もしかして762はバカ?";
if($value =~ /([0123456789]*)/){
    $match = $1 ;
    print "$match \n"; #←「・」となってちゃんと取得できてない
}

環境:
  Perl5 (ActivePerl)
  Win2k
  文字コードはSJISで。

どうすればよいのでしょうか・・・
0763nobodyさん04/10/12 14:22:00ID:???
>>762
http://homepage1.nifty.com/nomenclator/perl/shiftjis.htm
0764nobodyさん04/10/12 14:39:46ID:???
とりあえずこんな感じで対処できたようです・・・見苦しい感じですが

$value = "実は764は変態?";
if($value =~ /(\x82[\x4F-\x58]\x82[\x4F-\x58]\x82[\x4F-\x58]|\x82[\x4F-\x58]\x82[\x4F-\x58]|\x82[\x4F-\x58])/){
    $match = $1 ;
    print "$match \n";
}

ありがとうございました。
076575904/10/12 14:52:38ID:???
漏れならこうだな。
/((?:\x82[\x4F-\x58])+)/
0766nobodyさん04/10/12 20:54:11ID:???
Shift_JISか。。。
076775804/10/12 22:55:44ID:c8Tbm8wX
>>759
レスありがとうございます。
ちょっと質問がわかりにくくてすみません。
具体例を出すと、以下のような感じです。

$sjis='[\x81-\x9F\xE0-\xEF][\x40-\x7E\x80-\xFC]|[\x00-\x7F]|[\xA1-\xDF]';
$text="今日はカレーだ♪るんるん♪";
$text=preg_replace("/((?:$sjis)*?)([\xf3-\xf7][\x40-\xfc])/e","'\\1['.bin2hex('\\2').']'",$text);
print $text;  // ← '今日はカレーだーf482]驍驍'

それで、昨日からいろいろ試したところ、
$text=preg_replace("/\G((?:$sjis)*?)([\xf3-\xf7][\x40-\xfc])/e","'\\1['.bin2hex('\\2').']'",$text);
とすることで、ウチの環境では解決しました。
ですが、レン鯖(PHP 4.0.6)ではEZweb絵文字に全くマッチしなくなりました・・・orz

どなたかアドバイスよろしくお願いします。
もしPHP固有の問題であるなら該当スレに移動します。
076875804/10/12 23:07:38ID:???
あ、書き忘れていました orz
>>761で教えていただいた方法ですが、

$text="今日はカレーだ♪るんるん♪"; // 最後の文字は SJISコードF6CFの絵文字
$text = preg_replace("/($sjis)/", "\\1 ", $text);
$text = preg_replace("/([\xf3-\xf7][\x40-\xfc])\s/e", "'['.bin2hex(\\1).']'", $text);
print $text; // ←'今 日 は カ レ ー だ ♪ る ん る ん ♪ [f6cf]'

となって、文字ごとにスペースが入ってしまい、
そうかと言って
2行目を $text = preg_replace("/($sjis)/", "\\1", $text); に変えたら
'今日はカレーだ♪るんるん♪'(変化無し)という状況です・・・。

0769nobodyさん04/10/13 19:34:15ID:???
ダブルコーテーションの内側にある"を全て\"にエスケープするには、どのように置換すればよろしいでしょうか?
$text = '$a = "foo"bar"; $b = "hoge"huga"hage";';
これを'$a = "foo\"bar"; $b = "hoge\"huga\"hage";'にしたいです。
0770nobodyさん04/10/13 19:50:38ID:???
>>769
無理。というか無茶。
「ダブルコーテーションの内側」の文字列や $text 全体に、
何か一定の制限や特性があるならなんとかできなくもないかも知れないけど。
■ このスレッドは過去ログ倉庫に格納されています