将所有分隔线和换行符转换为单个分隔线

时间:2015-08-22 21:09:45

标签: php regex

我正在尝试清理用户输入并确保没有多余的分隔线或换行符。目前,我遇到了麻烦,因为用户可以使用三种主要方式来解决问题"

//function to convert text url into links.
function makeClickableLinks($s) {
  return preg_replace('@(https?://([-\w\.]+[-\w])+(:\d+)?(/([\w/_\.#-]*(\?\S+)?[^\.\s])?)?)@', '<a target="blank" rel="nofollow" href="$1" target="_blank">$1</a>', $s);
}

$my_tweets = $connection->get('statuses/user_timeline', array('screen_name' => 'TrulyDesigns', 'count' => 1));

echo '<div class="twitter-bubble">';
if (isset($my_tweets->errors)) {           
  echo 'Error :'. $my_tweets->errors[0]->code. ' - '. $my_tweets->errors[0]->message;
} else {
  echo makeClickableLinks($my_tweets[0]->text);
}
echo '</div>';

\n <br/> <br /> 有很多变体。因为这些都是可接受的HTML格式的细分。我尝试过在线搜索并使用以前的正则表达式,但他们似乎并没有抓住多个分界线来解决棘手问题

<br>

为了简化操作,我想将整个字符串转换为标准化的分隔线,因此每个<br/><br /><BR>< br > \r都会成为某种形式的\n或{{1}通过执行以下操作可能更容易解析:

<br/>

不幸的是,我不太了解正则表达式。如何创建正则表达式以删除所有分隔线的这些变体并将它们合并为一个?这些是我之前使用过的:

<br />

或者,更好的是,是否有更有效和实用的实践方法来实现这一目标?我猜测大多数用户输入的网站都有某种类型的系统

以下是我发现的字符串示例:

$string = 'some input with breaklines and newlines';
$string = nl2br($string);
$string = preg_replace(regex_expression, replacement, $string);

1 个答案:

答案 0 :(得分:3)

你想要的是

Column C = 1
Column D = 3

将\ r,\ n,$text = preg_replace("/(\r|\n|(\<\s*br\s*\/?\s*>))+/i", "<br/>", $text); <[ ]br[ ][/][ ]>的所有倍数替换为单个<[ ]BR[ ][/][ ]>