我正在尋找一個正則表達式,它可以用「 - >」替換所有的「[」,但只有當它沒有後跟「]」時。正則表達式替換[有 - >取決於條件
,並在同一時間什麼也沒有取代所有的「]」,但只有當他們沒有旁邊的「[」
所以在其他單詞「test [喜] []」將成爲「測試 - >喜[]」
謝謝;)
我真的不知道該怎麼做;)
我正在尋找一個正則表達式,它可以用「 - >」替換所有的「[」,但只有當它沒有後跟「]」時。正則表達式替換[有 - >取決於條件
,並在同一時間什麼也沒有取代所有的「]」,但只有當他們沒有旁邊的「[」
所以在其他單詞「test [喜] []」將成爲「測試 - >喜[]」
謝謝;)
我真的不知道該怎麼做;)
我所做的假設是,括號之間存在什麼樣的如下PHP variable naming conventions(即字母,數字,下劃線)並且您的代碼有效(例如,否$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
沒有正則表達式的需要!
strtr($str, array('[]'=>'[]','['=>'->',']'=>''))
$ cat 1.php
<?php
echo strtr('[hi][]', array('[]'=>'[]','['=>'->',']'=>''));
$ php 1.php
->hi[]
+1,因爲沒有使用正則表達式。但應該指出的是,這隻適用於這種特定格式(即'arr [key]')。如果你有不同的*鍵*,你可能需要擁抱正則表達式。 – 2012-07-11 14:21:08
如果沒有它可以解決任務,請勿使用正則表達式。做得好! – gaussblurinc 2012-07-11 14:57:17
我不認爲他需要匹配引號。 – Florent 2012-07-11 14:11:46
@Florent,爲未來的讀者提供更強大的功能。 – 2012-07-11 14:14:20
謝謝,它的工作...需要等待一分鐘或2分鐘,我會將此答案視爲已接受;) – Hipny 2012-07-11 14:17:16