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 вместо этого, чтобы перебрать строки документа:

http://www.php.net/manual/en/function.file.php

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 и сформулировать результирующую строку. Но если вы действительно хотите быть уверенным, выполняйте каждую итерацию по миллиону итераторов и измеряйте результат.

Пройдите через это:

Классы сокращенных символов (\ s)

preg_split

Не совсем отвечая на вопрос, но я пытался использоватьexplode('\<br\>',$string)на строку, которую я уже запускалnl2br($string)включено, поэтому я мог использовать разрывы страниц в качестве разделителя, но это не сработало.

The nl2brфактически вставляет значения (которые Muthu назвал правильным форматом), поэтому, если вы сначала запуститеnl2br()затем хотите использовать вставленные разрывы html-страниц в качестве разделителя дляexplode(), обязательно используйтеexplode('<br />',$string)на ваши результаты.

В Google Chrome, когда я просматривал страницу, результаты отображались с<br>. Когда я просмотрел исходный код страницы, я увидел, что они на самом деле<br />. Подумал, что это может сэкономить кому-то время, если они столкнутся с подобными проблемами.

Другие вопросы по тегам