1

preg_replace を使用して TeX ファイルのフォーマットを変更しようとしています。

これは私のコードです:

$regex = "#([\][A-Za-z]+)(Title)#e";
$replace = "('hl\{$1Title}')";
$newphrase = preg_replace($regex,$replace,$newphrase);

私の問題は、「{」の前の「\」が出力に出力されることです。

次のように: \hl\{FaithTitle} の代わりに: \hl{FaithTitle}

いろいろ試してみましたが、以下の2つです。

$replace = "('hl{$1Title}')";

それはページ全体をクラッシュさせます。

$replace = "('hl[{]$1Title}')";

それは、角括弧と中括弧を出力します。

どんな助けでもいただければ幸いです!

4

1 に答える 1

2

あなたの正規表現は、あなたが思っていることをしていません。

のため、\文字クラスは実際に一致しますA-Za-zが、は の意味をエスケープし、クラス内には何もないためです][\][

これを試して:

$regex = "#(\\[A-Za-z]+)(Title)#";

eモディファイヤも削除します。そもそもなぜそこにあるのかわかりませんが、おそらくそれがクラッシュしている理由です。

于 2012-04-06T21:09:52.593 に答える