用户可以这样输入:
<textarea name="sometext"></textarea>
我只想存储最多两个换行符。例如:
正确1(简单换行):
This should be stored
This should be stored
正确2:This should be stored too
This should be stored too
错:This should NOT be stored
This should NOT be stored
如果错误,应该自动转换为例2
如果您只想计算换行符,您可以使用substr_count()
:
if (substr_count($input, "'n") > 2) {
echo 'Invalid input';
}
似乎你想避免一个以上的空白行,在这种情况下,以下应该是足够的。
$l1 = "This should be stored
This should be stored";
$l2 = "This should be stored too
This should be stored too";
$l3 = "This should NOT be stored
This should NOT be stored";
$expected_l3 = "This should NOT be stored
This should NOT be stored";
$examples = array($l1, $l2, $l3);
$results = array();
foreach ($examples as $example) {
$lines = explode("'n", $example);
$result = array();
$blankLine = False;
foreach ($lines as $ii => $line) {
$line = trim($line);
if ($blankLine and !$line) {
continue;
}
$blankLine = False;
$result[] = $line;
if (!$line) {
$blankLine = True;
}
}
$results[] = implode("'n", $result);
}
assert($results[0] == $l1);
assert($results[1] == $l2);
assert($results[2] == $expected_l3);
您说您希望每个字符串最多存储2行新行。所以我们需要用这个字符串除以'n
出现的次数。
$data = "This should be stored too'nThis should be stored too";
$lines = preg_split("/'n/", $data);
var_dump($lines);
$data2 = "This should NOT be stored'n'n'nThis should NOT be stored";
$lines = preg_split("/'n/", $data2);
var_dump($lines);
$newlines = 0;
for($i = 0; $i < count($lines); $i++) {
if($lines[$i] == '') {
$newlines++;
}
}
if($newlines > 2) {
// do the conersion here.
}
我觉得@Anonymous差不多有了。如果我明白你在寻找什么,它似乎应该像下面这样。
if(substr_count($input,"'n'n'n")>0){
$input=str_replace("'n'n'n","'n'n",$input);
}
这将查找两个换行符,如果找到,它将删除它们。