我有很长的字符串,可同时容纳所有这些值: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