首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php中的Sanitize语句

php中的Sanitize语句
EN

Stack Overflow用户
提问于 2011-12-05 21:13:58
回答 2查看 424关注 0票数 9

标题听起来可能有些奇怪,但我试图设置这个preg_replace来处理文本区域的杂乱作者。它必须:

如果有一个感叹号,就不应该有另一个感叹号。如果有一个逗号,逗号必须是,当昏迷之前有

  1. 时,应该减少为空。
  2. 句子不能以逗号开头或结尾。
  3. 连在一起的字母不应该超过两个。H 210H 111必须始终在逗号后面出现空格。H 212G 213

例如:

  • ,我的房子,绿色的,很漂亮!
  • ,我的房子.,绿色的,很漂亮!
  • ,我的房子,绿色的,很漂亮的!

最终的结果应该永远是:

我的房子,绿色的,很漂亮!

有没有一个已经构建好的正则表达式来处理这个问题?

解决方案查看FakeRainBrigandsolution下面!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-05 21:32:55

我可能得用这个来做我自己的网站..。好主意!

代码语言:javascript
复制
<?php

$text = 'My hooouse..., which is greeeeeen , is nice!!!  ,And pretty too...';

$pats = array(
'/([.!?]\s{2}),/', # Abc.  ,Def
'/\.+(,)/',  # ......,
'/(!)!+/',   # abc!!!!!!!!
'/\s+(,)/',  # abc   , def
'/([a-zA-Z])\1\1/', # greeeeeeen
'/,(?!\s)/'); 

$fixed = preg_replace($pats, '$1', $text);

echo $fixed;
echo "\n\n";

?>

而‘改良的’版本的$text:,“我的房子,它是绿色的,很漂亮!”

更新:这是处理"abc,def“-> "abc,def”的版本。

代码语言:javascript
复制
<?php

$text = 'My hooouse..., which is greeeeeen ,is nice!!!  ,And pretty too...';

$pats = array(
'/([.!?]\s{2}),/', # Abc.  ,Def
'/\.+(,)/',        # ......,
'/(!)!+/',         # abc!!!!!!!!
'/\s+(,)/',        # abc   , def
'/([a-zA-Z])\1\1/');      # greeeeeeen

$fixed = preg_replace($pats, '$1', $text);
$really_fixed = preg_replace('/,(?!\s)/', ', ', $fixed);

echo $really_fixed;
echo "\n\n";
?>

我认为这有点慢,因为这是一个额外的函数调用。

票数 8
EN

Stack Overflow用户

发布于 2011-12-05 21:36:12

代码语言:javascript
复制
 - $result = preg_replace('/!+/', '!', $subject);
 - $result = preg_replace('/\.*,/', ',', $subject);
 - $result = preg_replace('/\s+(?=,)/', '', $subject);
 - $result = preg_replace('/^,*|,*$/', '', $subject);
 - $result = preg_replace('/([a-z])\1+/i', '$1$1', $subject);
 - $result = preg_replace('/,(?!\s)/', ', ', $subject);

)一个接一个地匹配您的规则:)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8391958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档