2010-08-02 65 views
1

如何在JavaScript中替換此字符|替換JavaScript和PHP中的字符串

<html> 
<body> 

<script type="text/javascript"> 

var str="data|data|data"; 
document.write(str.replace(/|/g,"<br />")); 

</script> 

在給定的代碼輸出,每一個角色都有了 「< BR />」

我不知道什麼是錯我的代碼.. :)

此外,對於PHP,我希望函數使用,如果輸入的是

|string|| 

和輸出應該是

string 

只。我只想在PHP中的字符串的外部部分被取代:||hel||lo||將變成hel||lo

我可以用trim()嗎?我認爲trim()只適用於空格。

+1

你應該發佈2個單獨的問題(特別是在不同的語言),以及2個單獨的問題。 – 2010-08-02 09:47:38

+0

借調 - 從你的評論下面,PHP的問題似乎與JS的稍有不同,但這個問題並不明顯。我會說這兩個是不同的發佈作爲兩個不同的問題。 – Piskvor 2010-08-02 09:59:25

回答

3

的JavaScript:

你必須逃生管道符號:

document.write(str.replace(/\|/g,"<br />")); 
//      ---^ 

PHP:

你可以通過另一個參數trim()指定要刪除的字符:

$str = trim($str, '| '); 

如果您也想刪除的字符串中間可以使用str_replace()字符:

$str = str_replace('|', '', $str); 
1

在Javascript中,你需要逃脫豎線:

alert("data|data|data".replace(/\|/g,"<br />")) 
4

你並不需要一個正則表達式這一點 - 如果你傳遞一個字符串作爲第一個參數 replace(),它會從字面上改爲:

var str='data|data|data'; 
str = str.replace('|', ''); 

......但它只會替換第一場比賽。對於全局替換,你需要指定global標誌:

var str='data|data|data'; 
var re = new RegExp('\|','g'); // G is the 'global' flag 
str = str.replace(re,''); 

在PHP中,str_replace()作品與字符串文字:

$str='data|data|data'; 
$str = str_replace('|', '', $str); 
// $str == datadatadata 

如果你只是想刪除外分隔符,使用trim()

$str='|||data|data||data|'; 
$str = trim($str,'|'); 
// $str == 'data|data||data'; 
+0

這是不正確的。在JavaScript中,它只會替換第一個出現的'|',你*有*在這裏使用正則表達式。 – 2010-08-02 09:47:45

+0

我只想在PHP中的字符串的外部部分被取代..像「|| hel || lo ||」並且輸出將是「hel || lo」 – 2010-08-02 09:47:50

+0

@vrynxzent:你可以使用'trim()'來查看我的答案。 – 2010-08-02 09:49:37

2

你需要逃避|字符,因爲它在正則表達式/ a | b /中用作OR,匹配OR b。 嘗試/ \ |/

編輯: 爲了實現wour一次進球嘗試做這種方式(正則表達式了很多,我知道):

document.write(str.replace(/(\|)+$/g,"").replace(/^(\|)+/g,"").replace(/(\|)+/g,"<br />")); 
+0

謝謝你的答案.. :)如何爲PHP? – 2010-08-02 09:46:13