0

私はこれを持っていると言う

searchpage-20/11111111111?node=15

を気にせずに文字列全体を置き換える正規表現を設定するにはどうすればよいですか?

11111111111

残りが一致する限り、真ん中に。

私は試した

searchallmp3-20/(.+?)\?node=
4

3 に答える 3

1

どうですか

<?php
$search = 'searchpage-20/11111111111?node=15';
$reg = '#(searchpage-\d+/)\d+(\?node=\d+)#';
echo preg_replace($reg, '${1}blah${2}', $search);

出力

searchpage-20/blah?node=15
于 2012-12-21T06:51:15.413 に答える
1

コードを投稿して、正規表現をどのように呼び出しているかを確認し、何が機能していないかを説明する必要があります。

正規表現でエスケープせずに使用して/いて、区切り文字も/

2 つの可能性:

  1. エスケープ/

    /searchallmp3-20\/(.+?)\?node=/
    
  2. 別の区切り文字を使用する

    ~searchallmp3-20/(.+?)\?node=~
    

php.net の区切り記号を参照してください。

質問の置換部分がまだわかりません。の前の数字を削除したい場合は、文字列の他の部分を?キャプチャする必要があります

 ~(searchallmp3-20/).+?(\?node=~)

と置き換えます

`$1$2`

これにより、

searchpage-20/?node=15

これはあなたが望むものですか?

于 2012-12-21T06:57:27.917 に答える
1

これを使用できるはずです:

/searchpage-(\d+)\/(\d+)\?node=(\d+)/

使用例:

preg_replace('/searchpage-(\d+)\/(\d+)\?node=(\d+)/', '', 'searchpage-20/11111111111?node=15');
于 2012-12-21T06:56:00.307 に答える