2

すべての「[」を「->」に置き換えることができる正規表現を探していますが、「]」が続いていない場合のみです。

同時にすべての "]" を何も置き換えませんが、"[" の隣にない場合のみです。

つまり、"test[hi][]" は "test->hi[]" になります。

ありがとうございました ;)

私は本当にそれを行う方法がわかりません;)

4

4 に答える 4

4

正規表現は必要ありません!

strtr($str, array('[]'=>'[]','['=>'->',']'=>''))




$ cat 1.php
<?php
echo strtr('[hi][]', array('[]'=>'[]','['=>'->',']'=>''));
$ php 1.php
->hi[]
于 2012-07-11T14:16:03.067 に答える
4

角かっこの間にあるものはPHP 変数の命名規則(つまり、文字、数字、アンダースコア) に従っており、コードは有効 (たとえば no )であると仮定しました$test['five]

echo preg_replace('/\[[\'"]?(\w+)[\'"]?\]/', '->\1', $input);

これは以下を処理する必要があります。

test[one]
test['two']
test["three"]

だがしかし:

test[$four]
于 2012-07-11T14:09:10.097 に答える
0

これで十分です。それは使用しています

\[     # match a [
(      # match group
[^\]]+ # match everything but a ] one or more times
)      # close match group 
\]     # match ] 

かっこの間の何かに一致する

$replaced = preg_replace("/\[([^\]]+)\]/", "->$1", $string);
于 2012-07-11T14:09:33.580 に答える
0

この正規表現\[(\w+)\]->+ 一致グループ 1に置き換えます

于 2012-07-11T14:09:34.743 に答える