2015-01-05 6 views
-4

У меня есть неприятная проблема. Я не могу взорвать строку «animation<br> adventure<br> action». Мне нужно удалить «<br>» (с пробелом) и получить результат в массив.Взорвать специальную строку в PHP

Может кто-нибудь помочь мне с этим?

Я попытался:

$genre = explode("<br> ", $genre); 
$genre = explode("<br>\n", $genre) 
$genre = preg_split('/<br[^>]*>\s*/i', $genre); 

Следующий код дает мне ([0] => animation<br> [1] => adventure<br> [2] => action):

$genre = explode(" ", strip_tags($genre)); 

Но мне нужно, чтобы избавиться от "<br>".

UPDATE

Это работает, если я использую:

$genre = "animation<br> adventure<br> action"; 
$genre = explode("<br> ", $genre); 

Но нет, если я использую $genre, который извлекает результат из базы данных. Внутри $genre Я сохранил строку. Он выглядит как «animation<br> adventure<br> action», если я печатаю $genre. Результат из базы данных не будет взрываться, почему?

+2

сделать любую основную отладку, как проверка, если у вас действительно есть ''
в строке, а не '< бр >'? –

+0

Нет, извините, это сработало -> '$ genre = explode (" <br> ", $ genre);' – Treps

ответ

0

Вы можете просто сделать это с str_replace

$genre = str_replace('<br> ', ' ', $genre); 
$genre = explode(' ', $genre); 

Вы также можете использовать любой символ, чтобы разделить ваши $ жанр, если строка содержит пробелы.

$genre = str_replace('<br> ', ',', $genre); 
$genre = explode(',', $genre); 
+0

Все еще дает мне: '([0] => анимация
[1] => приключение
[2] => action) ' – Treps

+0

вы должны исправить свой ответ, чтобы обрабатывать строки, содержащие пробелы (например,'adventures
еще лучше приключений') –

+0

@Treps я бы тогда придерживался комментария Marc B, кажется, что ваша строка не содержит«
», но закодированная версия – freddy142

0

Это прекрасно работает.

$genre = "animation<br> adventure<br> action"; 
$genre = explode("<br> ", $genre); 

print_r($genre); 

Here's результат

+0

Хм, когда я делайте это, как вы, он работает, но когда я получаю '$ genre' из базы данных, он не работает. : S – Treps

+0

@Treps Мораль истории - это тот, кто хранит данные в базе данных, должен быть более осторожным. – apokryfos

0

Вы могли бы взорваться на <br>, а затем использовать trim() на каждом элементе, чтобы избавиться от пробелов в начале и в конце строки:

$array = array() 
foreach(explode('<br>', $string) as $value){ 
    $array[] = trim($value); 
} 
0

Вы может использовать strip_tags, чтобы удалить все теги html. Второй параметр (необязательно) может быть заполнен тегами, которые вы не хотите удалять. Взгляните на документацию/руководство для получения дополнительной информации.

1

Решения

$genre = explode("&lt;br&gt;", $genre); 

Благодаря @Marc В.

+0

Ох ... Не могу поверить, что тоже сделал эту ошибку ... Facepalm ... Как я мог забыть? – Soaku

Смежные вопросы