2011-08-15 31 views
0

我創建了一個數據庫,其中以分號分隔產品屬性;。我選擇這個的原因是它作爲規範的一部分自然不太可能自然而然地出現。在PHP中使用Escape Semicolon?

我希望做到這一點:

<ul> 
    <li><?php str_replace(';','</li><li>',$row['specifications']); ?></li> 
</ul> 

這將創造一個很好的無序列表。但是,分號被看作是PHP代碼本身的一部分,而不是str_replace函數的一部分。它不會被正常的反斜槓方法轉義。

在這個函數中是否有任何逃避分號字符的方法,或者我在選擇分號時是否有點傻,還應該選擇其他的東西?

- 編輯 -

對不起,我的錯誤,它確實有效。 ['specifications']後,我錯過了我的左括號。

感謝您的答案,但!

+0

真的嗎?什麼證據導致你得出結論:''被解釋爲句子終結者? –

回答

3
$test = "asd;123;asd;123"; 
echo '<ul>'; 
echo '<li>'.str_replace(';','</li><li>',$test).'</li>'; 
echo '</ul>'; 

適合我。

+0

是一個不匹配的'('沒有關閉,謝謝你的迴應 –

3

我不是很確定什麼是你想實現的,但你的片斷是錯誤的

http://sandbox.phpcode.eu/g/d92eb.php

<?php 
$row['specifications'] = 't;e;s;t'; 
?> 
<ul> 
    <li><?php echo str_replace(';','</li><li>',$row['specifications']); ?></li> 
</ul> 

是正確的(你已經錯過了echo

+0

是不匹配的'('沒有關閉,謝謝你的迴應 –

2

你必須有在你的代碼的早些時候某處出現錯誤匹配的'。 PHP不會將字符串中的;作爲語句終止符。由於它正在終止該語句,因此它不在字符串「內部」。

+0

是不匹配的'('沒有關閉,謝謝你的迴應 –