[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Удалить пробелы в строках и пустые строки
alerzo
Здравствуйте! Есть текстовое поле textarea
<textarea type="text" cols="80" rows="5" name="urlvhoda" id="urlvhoda" placeholder="Ссылки для входа, например http://site.com, каждая с новой строки" required/></textarea><br /><br />


и php код

$urlvhoda = $_POST['urlvhoda'];
$urlvhoda = explode(PHP_EOL, $urlvhoda);
foreach($urlvhoda as $k=>$v)$urlvhoda[$k] = trim($v);
$urlvhoda = "'".implode("',".PHP_EOL."'", $urlvhoda)."'";
$zap= ",";
$urlvhoda = $urlvhoda.$zap;


На выходе получается следующее, если пользователь вводит строку:

http://phpforum.su
http://phpforum.su
http://phpforum.su
http://phpforum.su


то в конечной переменной лежит вот что:

'http://phpforum.su',
'http://phpforum.su',
'http://phpforum.su',
'http://phpforum.su',


Если ввести пустую строку между другими, то она также оборачивается в ковычки, нужно чтобы пустых строк не было...также если ввести дополнительные пробелы - они также оборачиваются в ковычки - их не должно быть. В php я не силен, подскажите как поправить!
bestxp
trim пришло твое время и проверка на длину строки
GET
foreach($urlvhoda as $k=>$v)$urlvhoda[$k] = trim($v);


Как-то так может

foreach($urlvhoda as $k=>$v)if(!trim($v))unset($urlvhoda[$k]);


или может даже если там должны быть только url:
$urlvhoda = $_POST['urlvhoda'];
$urlvhoda = explode(PHP_EOL, $urlvhoda);
if($urlvhoda=filter_var_array($urlvhoda,FILTER_VALIDATE_URL))$urlvhoda = "'".implode("',".PHP_EOL."'", $urlvhoda)."'";
else $urlvhoda='?';
$zap= ",";
$urlvhoda = $urlvhoda.$zap;



код не проверял

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
alerzo
Цитата (GET @ 31.08.2015 - 08:27)
foreach($urlvhoda as $k=>$v)$urlvhoda[$k] = trim($v);


Как-то так может

foreach($urlvhoda as $k=>$v)if(!trim($v))unset($urlvhoda[$k]);


или может даже если там должны быть только url:
$urlvhoda = $_POST['urlvhoda'];
$urlvhoda = explode(PHP_EOL, $urlvhoda);
if($urlvhoda=filter_var_array($urlvhoda,FILTER_VALIDATE_URL))$urlvhoda = "'".implode("',".PHP_EOL."'", $urlvhoda)."'";
else $urlvhoda='?';
$zap= ",";
$urlvhoda = $urlvhoda.$zap;



код не проверял

Ваш код не работает, что поправить не понял..он просто удалил все строки оставив последнюю..
Legendarniy
Цитата (alerzo @ 31.08.2015 - 12:56)
Ваш код не работает, что поправить не понял..он просто удалил все строки оставив последнюю..

Можно жи сделать через регулярку.


$urlvhoda = $_POST['urlvhoda'];
preg_match_all('/([\S]+)/iu', $urlvhoda, $arr);
$urlvhoda = "'".implode("',".PHP_EOL."'", $arr[0])."'";
volter9
alerzo
Можно еще так (с помощью массивов):
$urlvhoda = array_filter(explode("\n", $urlvhoda));
$urlvhoda = array_map(function ($value) {
return "\"$value\"";
}, $urlvhoda);
$urlvhoda = implode(",\n", $urlvhoda);


Или с помощью регулярных выражений:
$urlvhoda = preg_replace('/\n+/', "\n", $urlvhoda);
$urlvhoda = trim($urlvhoda);
$urlvhoda = chop(preg_replace('/^(.*)$/m', '"$1",', $urlvhoda), ',');


_____________
Мой блог
Bolik
Еще встречал такое array_filter($arr, 'strlen'). Может поможет?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.