我已經在此工作了一段時間沒有成功。所以我在尋求幫助。php preg_replace 100%變成100;%
我有什麼:
我有各種圖案的數組我找的,所以我可以代替他們。數組中的所有其他項目都可以正常工作。這些替換字符串中只有一個是我以前從未見過的。
該字符串是:
width_(\d+\w+)=width: $1;
當這是通過破開的等號爆炸:
$a = explode('=', $replacement_string);
這變爲:
$a[0] = "width(\d+\w+)";
和
$a[1] = "width: $1;";
然後對輸入的字符串進行測試。
$a = preg_replace("/$a[0]/i", "$a[1]", $incoming_string);
現在「我不知道它爲什麼這樣做」部分。如果輸入的字符串是
"width_100px"
我回來
"width: 100px;"
但如果輸入字符串是
"width_100%"
我回來
"width: 100;%"
奇怪的是 - 如果我剛回來
"width: 100;"
我能理解它。 「%」與分號(;)匹配。但是這將分號放在AND百分號中。只是它們被顛倒了。我甚至試圖尋找,看看是否有一個百分號和其更改爲
"width_100\%"
但是,這並沒有改變它所散發出來的。
我也只是嘗試了「%%」而不是一個「%」。仍然作爲
width: 100;%
任何幫助表示讚賞。
回答說:
這個問題的答案難題是正則表達式的 「\ W」 部分確實不匹配百分號(%),因爲\ w是唯一的[A-ZA-Z0-因爲所有這些字符串都被分解到不同的請求中,所以width_100%是通過改變它正在查找的內容來完成的(\ d +(。*))(根據Chris85的建議) - 這會捕獲數字(在本例中爲100)以及百分號,從而允許我將其轉換爲「寬度:100%」。
非常感謝Chris和Uby的幫助。
是的,我忘了把它們。他們在原始代碼中。 $ d = preg_replace(「/ $ c [0]/i」,「$ c [1]」,$ v1); 我修改了上述問題。 –
好吧,你有沒有找到'%'的正則表達式,所以它不會取代它。如果它們最後出現,你想替換'%'嗎? – chris85
不,我正在做的是將CSS信息從使用下劃線轉換爲實際的CSS命令。所以像border_1px_solid_white變成邊框:1px純白色。在這種情況下,我將width_100%轉換爲寬度:100%。所以基本上,我正在生成我的CSS而不是具有單獨的CSS文件。爲什麼?因爲那樣我就不必在兩個地方進行更改。我只需修改HTML中的CSS命令,它們就是我自動生成的。 –