0

あるCMSから別のCMSにデータをインポートしています。たとえば、1つのCMSに画像のコールアウトがあります。

{image id="12321" align="right" crop="square"}

また

{image id="12321" align="left" crop="rectangle"}

技術的に言えば、alignまたはcropの値はさまざまな値であり、すべてアルファベット順です。これらのシナリオのいずれかを取り上げて、次のように変換したいと思います。

[image id="12321" align="VALUEHERE" crop="VALUEHERE"]

申し訳ありませんが、先に詳しく説明する必要がありました。これは記事の本文の一部です。最初と最後の文字を単に置き換えることはできません:)また、性質が似ているコールアウトがあり、str_replaceは機能しません。preg_replaceの助けを期待していたので、タイトルで正規表現について言及しました。最初の質問の投稿からもっと詳しく説明する必要がありました。

4

4 に答える 4

2

すべての値がアルファベットの場合({を含めることはできません)、正規表現も必要ありません。

$finalStr = str_replace('{', '[', $initial);
$finalStr = str_replace('}', ']', $initial);
于 2012-08-02T20:39:02.497 に答える
2

正規表現の解決策は次のとおりです。

$out = preg_replace('/\{(.*?)\}/','[$1]',$in);

編集 :

私はあなたにこれを説明するために最善を尽くしますが、より良い説明のためにpreg_replaceドキュメントを読むことができます。

最初のパラメーターは正規表現です。中かっこ内のすべてをキャプチャするようにPHPに指示します(。*は0個以上のカレーターを意味します)。かっこ()を使用して、キャプチャするものをラップする必要があります。

2番目のパラメーターは置換です。$と数値(私が$ 1を使用したように)を使用して、キャプチャしたものを最初のパラメーターに挿入できます。

基本的に、{}の中にあるものをキャプチャして[]の中に入れるように指示しました。

あなたが何かを理解したことを願っています...正規表現を説明するのは本当に難しいです...

于 2012-08-02T20:41:56.580 に答える
1

形式が常に同じであるとすると、次のようになります。

$input = '{image id="12321" align="left" crop="rectangle"}';
$output = preg_replace('/{image id="([^"]*)" align="([^"]*)" crop="([^"]*)"}/', '[image id="$1" align="$2" crop="$2"]', $input);
于 2012-08-02T20:39:42.900 に答える
1

文字列の最初と最後の文字であるとすると、

$input[0] = "[";
$input[strlen($input)-1] = "]";
于 2012-08-02T20:41:08.687 に答える