1

PHPに文字列があると仮定します

$string = 'Hello \world, how a\re you?';

バックスラッシュが前にない場合は、すべての w と r を置き換えたいと思います。私は preg_replace が進むべき道だと思いますが、これを機能させるのに十分な正規表現を理解していません:

$newString = preg_replace(array('/????/', '/????/'), array('!', '!'), $string);

希望どおりに機能する場合、出力は次のようになります

エコー $newString; // 出力: 'Hello \wo!ld, ho! あなたは?'

ご協力いただきありがとうございます。

4

2 に答える 2

4

否定後読みを使用できます。

preg_replace('/(?<!\\\\)[wr]/', '!', $string);
于 2013-06-30T21:30:10.990 に答える
3

これには、否定的な後読みを使用できます。

/(?<!\\)[wr]/

コードのように:

preg_replace('/(?<!\\\\)[wr]/', '!', $string);
于 2013-06-30T21:30:29.867 に答える