2

一致する文字列を置き換えようとしています。以下の例を参照してください

<?php
    $str="this is going to bold [[this]]";
    echo preg_replace("/[[(.*)]]+/i","<b>$1</b>",$str);
?>

したがって、出力は次のようになります

これは太字になり ます

編集:

<?php
    $str="bhai bhai *that* -wow- perfect";
    $find[0]="/*(.+)*/i";
    $find[1]="/-(.+)-/i";
    $rep[0]="<b>$1</b>";
    $rep[1]="<i>$1</i>";
    echo preg_replace($find,$rep,$str);
?>

これは警告を表示しています

警告: preg_replace() [function.preg-replace]: コンパイルに失敗しました: 7 行目の C:\xampp\htdocs\page.php のオフセット 0 で繰り返すものはありません

4

3 に答える 3

4

これを試して :

<?php
    $str="this is going to bold [[this]]";
    echo preg_replace("/\[\[(.+)\]\]+/i","<b>$1</b>",$str);
?>

出力:

これは太字になります


ヒント:

[および]文字はspecialと見なされるため、エスケープする必要があります (: \[、 など\])。


アップデート :


<?php
    $str="bhai bhai *that* -wow- perfect";
    $find[0]="/\*(.+)\*/i";
    $find[1]="/\-(.+)\-/i";
    $rep[0]="<b>$1</b>";
    $rep[1]="<i>$1</i>";
    echo preg_replace($find,$rep,$str);
?>
于 2012-04-24T08:47:59.487 に答える
0

サイズはこちらをご試着ください

<?php
    $str="this is going to bold [[this]]";
    echo preg_replace("/(?:\[\[)(.*?)(?:\]\])/i","<b>$1</b>",$str);
?>
于 2012-04-24T08:48:57.663 に答える
0

正規表現で角括弧をエスケープする必要があります。最終的な式は次のようになります。

echo preg_replace('/\[\[(.*?)\]\]/im', '<b>$1</b>', $str);

角括弧は一連の文字を定義するために使用される特殊文字であるため、文字どおりに一致させたい場合はエスケープする必要があります。

于 2012-04-24T08:49:37.380 に答える