簡體   English   中英

與Regex有一些麻煩

[英]Having some trouble with Regex

好的,我有這個:

$fromArray = array(
"/(\[color=)(.+)(\])/",
"(\[\/color\])");

$toArray = array(
"<span style=\"color:\\2\">",
"</span>");

它應該做的是匹配所有[color = to。

我正在運行它,但這是源輸出:

<span style="color:red]RED<b>BOLD</b>RED[/color">

當我試圖跑

[color=red]RED[b]BOLD[/b]RED[/color]

通過它。

這是怎么回事? 我不太了解正則表達式,這是我的第一個正則表達式。 但我只是無法弄清楚為什么它會創建那些不起作用的丑陋源代碼:(

有人知道嗎?

謝謝 :)

**如果有人沒有IDEA我想用它做什么(很不清楚:),這是它:

將[color = red]翻譯為<span style="color:red;">將[/ color]翻譯為</span>

現在我需要單獨進行這些操作,如果我將它們作為一個正則表達式模式進行操作,它將會解決另一個需要幾天解釋的問題:\\

使用非貪婪量詞:

$fromArray = array(
"/(\[color=)(.+?)(\])/",
"(\[\/color\])");

發生的事情是你的開始標記的正則表達式實際上是吞噬了開始標記,中間的東西結束標記,因為.+貪婪並盡可能地匹配,所以\\]實際上匹配了在關閉標記的末尾括號。

非貪婪的版本, .+? ,盡可能少地匹配,同時仍允許正則表達式匹配,因此將確保僅匹配打開的標記。

考慮到Amber的答案,你也可以像這樣運行一行/匹配:

$subject = '[color=red]RED[b]BOLD[/b]RED[/color]';
$result = preg_replace('%\[color=([#a-g0-9]+)\](.+?)\[/color\]%im', '<span style="color:$1">$2</span>', $subject);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM