林的preg_replace解碼設置高亮我用(.*?)
獲取屬性值的值。的preg_replace與屬性使用
我想用font-size:\10px; (font-size:(.*?)0px;)
替換它,例如,如果屬性值是7,那麼字體大小將是70,但相反,它認爲我想要值\ 10。我能做些什麼來區分屬性值和0?
是否有可能做這樣'font-size:'.\1.'0px;'
或類似於從零的屬性值分開的東西嗎?
林的preg_replace解碼設置高亮我用(.*?)
獲取屬性值的值。的preg_replace與屬性使用
我想用font-size:\10px; (font-size:(.*?)0px;)
替換它,例如,如果屬性值是7,那麼字體大小將是70,但相反,它認爲我想要值\ 10。我能做些什麼來區分屬性值和0?
是否有可能做這樣'font-size:'.\1.'0px;'
或類似於從零的屬性值分開的東西嗎?
\${1}0
是溶液中作爲記錄here。
[編輯]
我試過反斜槓的所有可能的金額,不得不說..對我來說這使得完全沒有感,即
echo preg_replace('/(2.)/', '\\${1}', '12345');
輸出1${1}45
但我找到一個解決方案,heredoc:
$a = <<<ABC
\${1}
ABC;
echo preg_replace('/(2.)/', $a, '12345');
'' \ 2''我已經試過了,但是它輸出了' – 2013-05-12 21:05:29
它應該是'' \\ 2'' – Matmarbon 2013-05-12 21:06:44
似乎不起作用,就像它將使用單個反斜槓 – 2013-05-12 21:11:25
適用於這樣的文字:
$str = <<< EOD
[size="4"]test1[/size]
[size="4]test2[/size]
[size=4"]test3[/size]
[size=4]test4[/size]
EOD;
$pattern = '@\\[size=("?)(\\d++)\\1\\](.*?)\\[/size\\]@s';
的preg_replace:
$replace = '<span style="font-size:${2}0px;">$3</span>';
echo preg_replace($pattern,$replace,$str);
preg_replace_callback:
$replace = function ($matches) {
return sprintf('<span style="font-size:%s0px;">%s</span>',
$matches[2],
$matches[3]
);
};
echo preg_replace_callback($pattern,$replace,$str);
結果:
<span style="font-size:40px;">test1</span>
[size="4]test2[/size]
[size=4"]test3[/size]
<span style="font-size:40px;">test4</span>
OMG ... PHP手冊會產生很大的混亂......
關於此代碼:
echo preg_replace('/^(1)(2)(3)(4)(5)$/', $r, '12345');
預期輸出:
12345!!12345!!
當使用定界符:
$r = <<< EOD
$0!!\${1}2\${3}4$5!!
EOD;
然而,不使用heredoc:
$r = '$0!!${1}2${3}4$5!!';
是,反斜槓是不需要。
我認爲應該改進手冊... – mpyw 2013-05-12 21:59:46
發佈示例inout和您的preg_replace調用。 – anubhava 2013-05-12 21:06:41
preg_replace函數呼叫=' '/ \ [大小\ = 「?(。*?)」?\](。*?)\ [\ /尺寸\]/ms'' 替換='' 的 \\ 2'' sample output =' blalba'(假設值爲7) – 2013-05-12 21:10:07
Pls提供一個示例輸入,以便我可以嘗試您的示例並向您推薦一些東西。 – anubhava 2013-05-12 21:31:19