2017-02-23 124 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