1

変数から、二重角かっこ[[]]とその間のすべてを削除してから、挿入されたimgに置き換えます。

次の列の結果があります。

<p>hey</p><p>[[{"type":"media","view_mode":"media_large","fid":"67","attributes":{"alt":"","class":"media-image","height":"125","typeof":"foaf:Image","width":"125"}}]]</p>

置換後、変数は次のようになります。

<p>heey</p><p><b>img inserted<b></p>

preg_replaceを使用しようとしましたが、これはまだ高度すぎるようです。

誰かがこれを達成する方法について私にいくつかのアドバイスを与えることができますか?

4

2 に答える 2

3

これを試して:

<?PHP
    $subject = '<p>hey</p><p>[[{\"type\":\"media\",\"view_mode\":\"media_large\",\"fid\":\"67\",\"attributes\":{\"alt\":\"\",\"class\":\"media-image\",\"height\":\"125\",\"typeof\":\"foaf:Image\",\"width\":\"125\"}}]]</p>';
    $pattern = '/\[\[[^[]*]]/';
    $replace = '<b>img inserted</b>';
    $result = preg_replace($pattern, $replace, $subject);
    echo '<p>Result: '.htmlspecialchars($result).'</p>';
?> 

説明のために:/.../は正規表現を区切ります。[は特殊文字であるため、[[はエスケープする必要があります。したがって\[\[。その後、を使用して[ではない文字を取得し[^[]ます。これは必要に応じて何度でも繰り返されます[^[]*。その後、2つの括弧があります。\]\]

また、角括弧内に[が含まれている場合、これは機能しません。あなたのフォーマットから判断すると、これは当てはまりません。それ以外の場合は、より複雑な構文を使用する必要があります。これらの余分な[がエスケープされている場合は、おそらく後方参照を使用します([)。エスケープされていない角かっこが発生する可能性がある場合、正規表現でこれを解決することはできません。

于 2013-03-24T16:04:54.183 に答える
3
$string = '<p>hey</p><p>[[{"type":"media","view_mode":"media_large","fid":"67","attributes":{"alt":"","class":"media-image","height":"125","typeof":"foaf:Image","width":"125"}}]]</p>';
$new_string = preg_replace('/\[\[.*?\]\]/', '<b>img inserted</b>', $string);

echo $new_string;
于 2013-03-24T16:07:37.727 に答える