2017-02-23 172 views
-1

我有一個簡單的PHP語句,但它不斷給我'內部500'。 任何人都可以看到這段代碼有什麼問題嗎?PHP如果語句不工作在preg_replace

(它的工作原理沒有 '如果')

$fullyfiltered = preg_replace('/<span>(.*?)<\/span>/', '<div class="chat-message ' if('$1'=="MichaelD"){'me'}else{'chat-midnightblue'}'"><div class="chat-contact"><img src="/assets/demo/avatar/tswan.png" alt=""></div><div id="chat-text" class="chat-text">$1: ', $nearlyfiltered); 

編輯 - 完整的腳本:

<script> 
    setInterval(function(){ 
    document.getElementById('chat-text').innerHTML = ''; 
    <?php 
    $fh = fopen('chat.txt','r'); 
    while ($line = fgets($fh)) { 
    //echo "<p>" . $line . "</p>"; 
    $filtered = str_replace("'", "\\'", $line); 
    $almostfiltered = str_replace("<span></span>\n", "", $filtered); 
    $nearlyfiltered = trim(preg_replace('/\s\s+/', ' ', $almostfiltered)); 
    $fullyfiltered = preg_replace('/<span>(.*?)<\/span>/', '<div class="chat-message ' if('$one'=="MichaelD"){'me'}else{'chat-midnightblue'}'"><div class="chat-contact"><img src="/assets/demo/avatar/tswan.png" alt=""></div><div id="chat-text" class="chat-text">$1: ', $nearlyfiltered); 
    if(!empty($fullyfiltered)){ 
     $endingp = "</div></div>';"; 
    } else { 
     $endingp = "';"; 
    } 
    echo "document.getElementById('chat-text').innerHTML = document.getElementById('chat-text').innerHTML + '" . $fullyfiltered . $endingp; 
    } 
    fclose($fh); 
    ?>  
    },5000); 
</script> 
+0

$ 1不是一個變量。嘗試$ 1代替(你不能使用數字作爲php變量) – Option

+0

仍然錯誤,即使我改變了這個 –

回答

1

回調必須是一個函數,而不是隨機的腳本部分。請閱讀說明書(http://php.net/manual/en/function.preg-replace-callback.php

+0

你能給我一個例子嗎? –

+0

對不起,即時通訊不太好,所以我不能給你一個確切的例子,只是一個建議。您可以在PHP手冊頁上找到示例,但將它們用於代碼實際上是成爲開發人員的一部分,因此,請先嚐試一下該建議,然後在遇到問題時尋求幫助。 – Auris