2

だから - 私はこのような文字列を持っています (string1 の例):

'aaaaabbbbbcccccword'
'aaaaabbbbbcccccwor*d'
'aaaaabbbbbcccccw**ord*'
'aaaaabbbbbccccc*word*'

そして、これらの文字列の末尾から一部の部分文字列 (string2) を、string2 内の * 文字と * string2 の前と次の string2 とともに削除する必要があります。string2 は変数です。ここで使用できる正規表現が思い浮かびません。

//wrong example, * that might happen to be inside of $string1 are not removed :(
$string1 = 'aaaaabbbbbcccccw**ord*';
$string2 = 'word';
$result = preg_replace('#\*?' . $string2 . '\*?$#', '', $string1);

誰かがそのための PCRE 正規表現を提案できますか?

PSリスト15ポイントで好きに賛成票を投じることはできますか? だから私は人々に賛成票を投じることができますか?

4

2 に答える 2

2

これを行う1つの方法を次に示します。

$string1 = 'aaaaabbbbbcccccw**ord*';
$string2 = 'word';
$result = preg_replace('#\*?' . implode('\**', str_split($string2)) . '\*?$#', '',
                        $string1);
echo $result;
//=> aaaaabbbbbccccc
于 2013-11-01T17:12:22.330 に答える
1
$regexp = '#\**' . implode('\**', str_split($string2)) . '\**$#';
$result = preg_replace($regexp, '', $string1);

デモ

str_split文字列を文字に分割し、それぞれの間にimplode挿入\**します。次に、その\**前後に配置して、周囲*の文字も取得します。

于 2013-11-01T17:10:01.437 に答える