すべての「[」を「->」に置き換えることができる正規表現を探していますが、「]」が続いていない場合のみです。
同時にすべての "]" を何も置き換えませんが、"[" の隣にない場合のみです。
つまり、"test[hi][]" は "test->hi[]" になります。
ありがとうございました ;)
私は本当にそれを行う方法がわかりません;)
正規表現は必要ありません!
strtr($str, array('[]'=>'[]','['=>'->',']'=>''))
$ cat 1.php
<?php
echo strtr('[hi][]', array('[]'=>'[]','['=>'->',']'=>''));
$ php 1.php
->hi[]
角かっこの間にあるものはPHP 変数の命名規則(つまり、文字、数字、アンダースコア) に従っており、コードは有効 (たとえば no )であると仮定しました$test['five]
。
echo preg_replace('/\[[\'"]?(\w+)[\'"]?\]/', '->\1', $input);
これは以下を処理する必要があります。
test[one]
test['two']
test["three"]
だがしかし:
test[$four]
これで十分です。それは使用しています
\[ # match a [
( # match group
[^\]]+ # match everything but a ] one or more times
) # close match group
\] # match ]
かっこの間の何かに一致する
$replaced = preg_replace("/\[([^\]]+)\]/", "->$1", $string);
この正規表現\[(\w+)\]
を->
+ 一致グループ 1に置き換えます