0

私はこれをやろうとしましたが、正規表現を吸うだけです。私が必要としているのは、1番目、3番目、9番目を1番目、3番目、9番目に置き換える正規表現作成することです。文字または数字で。<sup></sup>

4

3 に答える 3

5

これは些細なことなので、必要なコンポーネントを提供します。

(?<=\d)現在の位置の直前にある番号の存在をチェックします。

(A|B|C)現在の位置にある正規表現A、B、またはCのいずれかをチェックします。

そして、それはあなたが必要とするすべてです。

于 2012-11-17T22:45:08.967 に答える
1

このコードを試してください:

$string = "bla 1st bla 2nd bla 3rd bla 5th 9thSomethingNotToBeReplaced ";
echo preg_replace('/(\d)+(st|nd|rd|th)([^\w\d]|$)/', '$1<sup>$2</sup>$3', $string);
于 2012-11-17T22:51:26.497 に答える
0

'2nd'も処理したいと思います。

$string = '1st, 2nd, 3rd and 9th';
echo preg_replace_callback('/1st|2nd|3rd|[4-9]th/', function($m){
    return $m[0]{0} . '<sup>' . substr($m[0], 1) . '</sup>';
  }, $string);

// 1<sup>st</sup>, 2<sup>nd</sup>, 3<sup>rd</sup> and 9<sup>th</sup>
于 2012-11-17T22:50:44.937 に答える