我有很長的字符串,可同時容納所有這些值:str_replace函數在PHP
hello<!>how are you? <!>I am fine<!> What is up? <!> Nothing!
我需要找到所有這些posibilities:
' <!> '
' <!>'
'<!> '
'<!>'
,代之以他們「\ n「
這可以用str_replace在php中實現嗎?
我有很長的字符串,可同時容納所有這些值:str_replace函數在PHP
hello<!>how are you? <!>I am fine<!> What is up? <!> Nothing!
我需要找到所有這些posibilities:
' <!> '
' <!>'
'<!> '
'<!>'
,代之以他們「\ n「
這可以用str_replace在php中實現嗎?
如果你只有這4種可能性,是的,那麼你可以用str_replace
來做到這一點。
$str = str_replace(array(' <!> ', ' <!>', '<!> ', '<!>'), "\n", $str);
沒錯,但如果有兩個空格?或者一個標籤?你爲每個添加一個空間案例嗎?
您可以添加特殊情況下,爲每個的,或使用正則表達式:
$str = preg_replace('/\s*<!>\s*/', "\n", $str);
編輯:preg_replace('/\s*<!>\s*', PHP_EOL, $string);
應該會更好。
當然,str_replace('<!>', "\n", $string);
如果您的示例已完成。
當然,您可以通過4次致電str_replace
來實現此目的。 編輯:我錯了。您可以使用str_replace
中的數組。
$str = str_replace(' <!> ', "\n", $str);
$str = str_replace(' <!>', "\n", $str);
$str = str_replace('<!> ', "\n", $str);
$str = str_replace('<!>', "\n", $str);
另外考慮使用strtr
,它允許一步完成。
$str = strtr($str, array(
' <!> ' => "\n",
' <!>' => "\n",
'<!> ' => "\n",
'<!>' => "\n"
));
或者你可以使用一個regular expression
$str = preg_replace('/ ?<!> ?/', "\n", $str);
@codeholic:你不需要4調用str_replace函數。他想替換爲「\ n」 – 2010-02-21 20:07:01
是的。你是對的。 – codeholic 2010-02-21 20:08:51
你當然可以用str_replace函數像這樣做:
$needles = array(" <!> ","<!> "," <!>","<!>");
$result = str_replace($needles,"\n",$text);
是的,但如果有兩個空格呢?或者一個標籤?你爲每個添加一個空間案例嗎? – 2010-02-21 20:04:11
@ e-satis:要求很明確。如果OP不是指他詢問或錯過了一些細節,他應該編輯該問題。 – 2010-02-21 20:05:25
你不能這樣做,只有str_replace
。可以使用explode
,strip
和implode
或用戶preg_replace
的組合。
你可以使用:
//get lines in array
$lines = explode("<!>", $string);
//remove each lines' whitesapce
for(i=0; $i<sizeof($lines); $i++){
trim($lines[$i]);
}
//put it into one string
$string = implode("\n", $lines)
這是一個有點乏味,但這應該工作(也刪除兩個空格和標籤)。 (未測試的代碼,所以有可能是錯誤的)
這是一種整齊:
$array = explode('<!>', $inputstring);
foreach($array as &$stringpart) {
$stringpart = trim($stringpart);
}
$outputstring = implode("\r\n", $array);
這就是它!謝謝! – andufo 2010-02-21 21:36:57