Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP // Строка в массив / 7 сообщений из 7, страница 1 из 1
26.09.2012, 16:32:04
    #37973152
poiuytrewq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP // Строка в массив
Добрый вечер,

имеется строка:

Код: php
1.
$string = 'Welcome to «PHP$raquo;!';



нужно получить массив, вида:

Код: php
1.
2.
3.
4.
5.
6.
7.
array(
[0] => Welcome to ,
[1] => «,
[2] => PHP,
[3] => $raquo;,
[4] => !
);



Т.е. разбить строку по html-сущностям, при этом важно сохранить порядок слов и не потерять сами сущности.
Как решить такую задачу?
...
Рейтинг: 0 / 0
26.09.2012, 17:07:29
    #37973224
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP // Строка в массив
poiuytrewq,

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
function splitter($input) {
  return preg_split("[\\\\]", preg_replace('/((?:\&|\$)\w+;)/', "\\,$1,\\", $input));
}

print_r(splitter('Welcome to «PHP$raquo;!'));

Array
(
    [0] => Welcome to
    [1] => ,«,
    [2] => PHP
    [3] => ,$raquo;,
    [4] => !
)
...
Рейтинг: 0 / 0
26.09.2012, 17:13:59
    #37973232
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP // Строка в массив
explode(' ', $str), да
...
Рейтинг: 0 / 0
26.09.2012, 17:45:35
    #37973285
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP // Строка в массив
poiuytrewq,

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
// Исправленный вариант

function splitter($input) {
  return preg_split('[~]', preg_replace('/([^\&\$]+)((\&|\$)\w+;)/', "$1,~$2,~", $input));
}

var_dump(splitter('Welcome to «PHP$raquo;!'));

array(5) {
  [0]=>
  string(12) "Welcome to ,"
  [1]=>
  string(8) "«,"
  [2]=>
  string(4) "PHP,"
  [3]=>
  string(8) "$raquo;,"
  [4]=>
  string(1) "!"
}
...
Рейтинг: 0 / 0
26.09.2012, 18:03:19
    #37973305
poiuytrewq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP // Строка в массив
Usman , спасибо, а можно как то сделать, чтобы в массиве, html сущносты были без & и ;, т.е. чтобы не

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
Array
(
    [0] => Welcome to ,
    [1] => «,
    [2] => PHP,
    [3] => »,
    [4] => !
)



а

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
Array
(
    [0] => Welcome to ,
    [1] => laquo,
    [2] => PHP,
    [3] => raquo,
    [4] => !
)
...
Рейтинг: 0 / 0
26.09.2012, 18:05:23
    #37973308
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP // Строка в массив
poiuytrewq,

Код: php
1.
2.
3.
function splitter($input) {
  return preg_split("[~]", preg_replace('/([^\&\$]+)(?:\&|\$)(\w+);/', "$1,~$2,~", $input));
}
...
Рейтинг: 0 / 0
26.09.2012, 18:07:37
    #37973310
poiuytrewq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP // Строка в массив
Usman , большое спасибо, всё отлично работает!
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP // Строка в массив / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]