explode() не работает с разделителем <br>
Сначала взгляните на мой скрипт:
<?php
$list=file_get_contents('txt.txt');
$name=explode('\r\n',$list); //file exploding by \n because list is one under one
foreach($name as $i1){
echo ($i1);
echo '</br>';
}
?>
это показывает мой результат (согласно списку):
morgan daniel martin sopie tommy
Но я использовал </br>
так что это должно показывать:
morgan
daniel
martin
sopie
tommy
Но, может быть, я что-то упустил.
4 ответа
В этой ситуации лучше использовать preg_replace
... как вы не понимаете это хорошо, можете использовать ниже уловки... см. код ниже...
<?php
$list=file_get_contents('txt.txt');
echo implode('<br>',explode(' ',$list));
?>
HTML:
morgan<br>daniel<br>martin<br>sopie<br>tommy
Предварительный просмотр:
morgan
daniel
martin
sopie
tommy
если вы хотите перерыв в конце тоже... используйте ниже одного...
echo implode('<br>',explode(' ',$list)).'<br>';
Использовать php file
вместо этого, чтобы перебрать строки документа:
explode()
разбивает согласно заданной граничной строке, поэтому вы должны включить все символы пробела.
Вы можете найти исполнение увидеть онлайн
Так что лучше перейдите к регулярному выражению, которое можно использовать с preg_split() с шаблоном регулярного выражения "\s" - классом пробельных символов
---edited---
//$list = $list = preg_replace('<br>',' ',$list);; // replace the <br> with space
$list = str_replace('<br>',' ',$list); //better than preg_replace as regex dont
// wok better for html tags
---EOF edited---
$name = preg_split('/\s+/',$list);
echo '<pre>';
print_r($name);
echo '</pre>';
----------- о / р ---------
Array ([0] => morgan [1] => daniel [2] => martin [3] => sopie [4] => tommy)
нота:
Замена, поскольку это жестко закодированная строковая функция.
Regex займет больше времени, так как ему нужно проанализировать строку regex (даже если вы установите RegexOptions.Compiled), затем выполнить его в строке regex и сформулировать результирующую строку. Но если вы действительно хотите быть уверенным, выполняйте каждую итерацию по миллиону итераторов и измеряйте результат.
Пройдите через это:
Не совсем отвечая на вопрос, но я пытался использоватьexplode('\<br\>',$string)
на строку, которую я уже запускалnl2br($string)
включено, поэтому я мог использовать разрывы страниц в качестве разделителя, но это не сработало.
The nl2br
фактически вставляет значения (которые Muthu назвал правильным форматом), поэтому, если вы сначала запуститеnl2br()
затем хотите использовать вставленные разрывы html-страниц в качестве разделителя дляexplode()
, обязательно используйтеexplode('<br />',$string)
на ваши результаты.
В Google Chrome, когда я просматривал страницу, результаты отображались с<br>
. Когда я просмотрел исходный код страницы, я увидел, что они на самом деле<br />
. Подумал, что это может сэкономить кому-то время, если они столкнутся с подобными проблемами.