我有一组三个preg_replace
函数给我我想要的结果,但我不知道是否有办法让代码更有效率。有没有办法合并这些变化?
$content = "A really long string with paragraph breaks, html tags, spaces, etc."
$string = preg_replace('/\.\n[A-Z](.+)/', '.', strip_tags($content));
$string = preg_replace('/\.\r[A-Z](.+)/', '.', strip_tags($string));
$string = preg_replace('/\.\s[A-Z](.+)/', '.', strip_tags($string));
我不需要任何人为我做我的工作。我只需要指针,因为一旦我知道有哪些选项可以使用,我就可以搞清楚。一切都是为了更清晰,更有效的代码。
更新
最终代码如下所示。
$content = "A really long string with paragraph breaks, html tags, spaces, etc."
$string = strip_tags($content);
$string = trim(preg_replace('/[\t\n\r\s]+/', ' ', $string));
$string = preg_replace('/\.[\t\n\r\s][A-Z](.+)/i', '.', $string);
答案 0 :(得分:1)
以下是我如何清理它:
$content = "A really long string with paragraph breaks and shift spaces, etc."
$string = preg_replace('/\.[\n\r\s][A-Z](.+)/', '.', strip_tags($content));
但我不明白的是strip_tags
扮演的角色。你的代码还有更多你没有展示的吗?我喜欢简单易懂的事情。在PHP中可调试,所以这就是我考虑strip_tags
:
$content = "A really long string with paragraph breaks and shift spaces, etc."
$content = strip_tags($content);
$string = preg_replace('/\.[\n\r\s][A-Z](.+)/', '.', $content);
这似乎是一个微妙的差异,但通过将strip_tags
放在一个单独的行上,您可以通过注释将其打开或关闭。
但是说,我看你的代码越多,我就越不明白输入应该是什么&想要什么输出。我的意思是,你的正则表达式是这样的:
/\.[\n\r\s][A-Z](.+)/
那会完全取代什么?为什么只是A-Z
?为什么不A-Za-z
?或者可能将i
修饰符添加到正则表达式中,因此它不区分大小写:
/\.[\n\r\s][A-Z](.+)/i