php
  • regex
  • preg-replace
  • replace
  • 2010-12-22 225 views 1 likes 
    1

    即時通訊開發一個測驗系統..替換字符串在PHP

    讓說,我有這個字符串..

    $my_string = "The language i use is [ans]php[/ans]"; 
    

    ,輸出是:

    我使用的語言爲[輸入name ='ans'id ='ans'/] // Textbox by the way

    我使用preg_replace函數但沒有運氣..

    我的代碼:

    $string = 'The quick [j]brown[/j] fox jumped over the lazy dog.'; 
    $patterns = array(); 
    $patterns[0] = '!\[j\]]'; 
    $patterns[1] = '/brown/'; 
    $patterns[2] = '\[/j\]!'; 
    $replacements = array(); 
    $replacements[0] = ''; 
    $replacements[1] = '<input type="text" name="j_1" id="j_1" />'; 
    $replacements[2] = ''; 
    echo preg_replace($patterns, $replacements, $string); 
    

    產量爲:

    The quick []<input type="text" name="j_1" id="j_1" /> [/] fox jumped over the lazy dog. 
    

    後市展望:

    The quick <input type="text" name="j_1" id="j_1" /> fox jumped over the lazy dog. 
    

    很感激,如果你們能幫助..

    感謝

    +2

    這真的是你想要的輸出嗎? – alexn 2010-12-22 13:59:04

    +1

    爲什麼不發佈您的代碼,以便我們可以嘗試找出什麼是錯誤的... – ircmaxell 2010-12-22 14:01:42

    回答

    0

    這應該如您所描述的那樣工作。

    $string = 'The quick [j]brown[/j] fox jumped over the lazy dog.';
    $string = preg_replace('/\[j\](.*)\[\/j\]/', '<input type="text" name="j_1" id="j_1" />', $string);
    print $string;

    您也可以訪問任何標記之間替換爲您的替換字符串上面的例子中使用$1

    如果你想運行其他的preg_replace搶答案應該是什麼,你會做這樣的事情:

    $string = 'The quick [j]brown[/j] fox jumped over the lazy dog.';
    $answer = preg_replace('/(.*)\[j\](.*)\[\/j\](.*)/', '$2', $answer);
    print $answer;

    的原因,您使用$2是因爲它是字符串的第二個匹配。 (請注意如何有三個(.*),每個那些比賽的東西,所以,$1將等於The quick$2將等於brown$3將等於fox jumped over the lazy dog.。)

    0
    $my_string = "The language i use is [ans]php[/ans] and bla bla [o]php[/o]"; 
    $my_html = preg_replace('/\[(.*?)\].*?\[\/.*?\]/msi','<input id="$1" name="$1"/>',$my_string); 
    echo $my_html; 
    
    0

    試試這個:

    $my_string = preg_replace('#\[(.*?)\](.*?)\[/\1\]#', 
              '<input type="text" name="\1_1" id="\1_1" />' 
              ,$my_string); 
    

    See it

    相關問題