2012-07-23 181 views
1

你好我創建一個發電機形式,以取代 一些CSS代碼我有...它會發現所有的 class和id以及點,並將其放置的.class 在他們面前。 ..preg_replace函數替換所有匹配

現在它只是取代第一場比賽 我已設置限制爲-1 ...爲什麼它忽略了它?

HTML:

<form action="get_html.php" method="post" id="form"> 
    html:<textarea rows="50" cols="80" id="html_box" name="html" type="text" align="texttop"></textarea> 
    <input id="button" type="submit" value="submit"></input> 
</form> 

get_html.php

<?php 
    $html= $_POST["html"]; 
    $string = (string)$html; 
    $patterns = array(); 
    $patterns[0] = '/^[.]/'; 
    $patterns[1] = '/^[#]/'; 
    $patterns[2] = '/,/'; 
    $replacements = array(); 
    $replacements[0] = '.class .\1'; 
    $replacements[1] = '.class #\1'; 
    $replacements[2] = ', .class \1'; 
    $str= preg_replace($patterns,$replacements, $string, -1); 
?> 
<textarea rows="50" cols="80"><?php echo $str; ?></textarea> 
+0

preg_replace在哪裏? – madfriend 2012-07-23 08:06:01

+0

我的不好,編輯對不起 – 2012-07-23 08:09:14

+1

通常是錯誤的方法 – diEcho 2012-07-23 08:15:03

回答

2

你的前兩個正則表達式只能匹配字符串的開始(^僅在每個行的開始,如果你使用的匹配/m修飾符)。

但這些正則表達式可能不會做你想讓他們做的事情。現在你正在尋找一個點或一個散列,但只有當它們是字符串/行(或任何逗號)的第一個字符並將它們替換爲.class和它們自己時。 \1是無用的,因爲你的正則表達式中沒有捕獲組。

+0

謝謝你是非常有幫助的! – 2012-07-23 08:25:43

+0

thx bro我現在正在工作! :d – 2012-07-23 11:20:04