我有一个Solr查询检索到的文本字段,其中包含电子邮件正文。我试图通过PHP替换带有段落标记的嵌入式换行符,如下所示:
static int floorLog2(int64_t x)
{
assert(x > 0);
return 63 - __builtin_clzl(x);
}
static int ceilLog2(int64_t x)
{
if (x == 1)
// On my system __builtin_clzl(0) returns 63. 64 would make more sense
// and would be more consistent. According to stackoverflow this result
// can get even stranger and you should just avoid __builtin_clzl(0).
return 0;
else
return floorLog2(x-1) + 1;
}
当我在IDE /调试器中显示结果时,换行符不会被替换,并且仍然存在:
我一直在浏览这个网站上的线程,尝试不同的人建议的模式,包括" / \ s + /"和PHP_EOL和" /(\ r \ n | \ r | \ n)/"没有任何作用。我做错了什么?
答案 0 :(得分:4)
type of x
用于正则表达式。你想要的是一个简单的字符串替换,所以你应该使用preg_replace
str_replace
答案 1 :(得分:3)
您错过了正则表达式字符串周围的分隔符,并且您没有分配该值 你也可以减少你的正则表达式:
$text = preg_replace("/\r?\n|\r/", '</p><p>', $text);
您可能希望切换到多字节安全版本。他们使用Unicode,你不需要分隔符;)
$text = mb_ereg_replace("\r?\n|\r", '</p><p>', $text);
答案 2 :(得分:0)
$text = preg_replace($new_line,'</p><p>',$text);
抱歉,我通常使用Perl编写代码并习惯于$ text = ~construction。