Как разбить строку на переменные

espada

Guest
Как разбить строку на переменные

Вернее, на элементы массива.

Допустим, есть у меня такая строка:

PHP:
$word="be<p class=word>appear<p class=word>present";
Мне надо превратить ее в массив, разделив по <p class=word>, чтобы получилось:

PHP:
$word [0]="be";
$word [1]="appear";
$word [2]="present";
Дополнительная проблема в том, что строк таких много, и в разных число элементов разное. Если делать через

PHP:
$word_one=strstr($word,"<p class=word>"); и так далее...
... то получается до невозможности громоздко.

Наверное, есть более простой способ, но найти его самостоятельно мне не удалось.
 

espada

Guest
Нет, там и другие теги есть, которые должны остаться.

Наверное так:

$word = preg_split( '/<p class=word>/U', $word );

Или так:

$word = preg_split( '<p class=word>', $word ); ?
 

neko

tеam neko
нет, если так, то просто split()

а если у тебя что-то должно остаться либо разбирай уж посимвольно либо РВ, которое разберется что оставлять а что нет.
 

espada

Guest
Ну, если я правильно понял прочитанное, то в случае

$word = preg_split( '/<.+>/U', $word );

разделителем будет любой тег.

А мне надо, чтобы только один конкретный.

Полностью исходная строка-образец выглядит так:

be <span class=crypt>[bi:]</span><p class=word>appear<p class=word>present

Желаемый результат:

$word[0]="be <span class=crypt>[bi:]</span>"
$word[1]="appear"
$word[2]="present"
 

neko

tеam neko
а сорри. невнимателен

просто
$word = split( '<p class=word>', $word );

-~{}~ 06.06.04 21:25:

ой, а можно я спрошу зачем это такое нужно?
 

Фанат

oncle terrible
Команда форума
чувачок-то кросспостингом занимается.
по башке надавать надо бы
 

korvin0

моська
iliah
именно explode и ничего кроме него, т.к. split - это для регов, а значит и работает медленнее.
 

espada

Guest
Спасибо. split сработал вполне даже быстро.

А кросспостингом я не занимаюсь. Заметив, что поместил сообщение не в тот раздел, я сразу попытался его грохнуть, но не нашел, как. Поэтому удалил в том разделе текст заглавного сообщения, а само сообщение перенес сюда.

Странно, почему на этом форуме отключена возможность удаления собственных сообщений?
 

espada

Guest
А explode работает с разделителями из целых словосочетаний? В мануалах везде примеры с разделителем из одного символа.
 

Winer

Мимо проходил
а посмотреть в мане, там нормальынм английским языком написано:
Returns an array of strings, each of which is a substring of string formed by splitting it on boundaries formed by the string separator

-~{}~ 07.06.04 17:14:

по-руски :)
Возврашает массив строк, каждая из которых есть подстрока из строки, сформированная разделением её на границах, заданных строкой разделителем.
 

espada

Guest
Автор оригинала: neko

ой, а можно я спрошу зачем это такое нужно?
А нужно это было потому, что я, когда строил свой многоязычный словарь http://thezaurus.org.ru сглупил при проектировании базы.

Мне надо было, чтобы разные переводы одного русского слова на иностранный язык находились в одной словарной статье. И я тупо решил помещать их в одну запись, разделяя тегом <p class=word>.

Но из-за этого возникла целая куча проблем, первая из которых - то, что в обратной выборке (иностранно-русском словаре) и при поиске по иностранному слову открывались не все иноязычные слова, а только заглавные.

Ну и я наконец разобрался, как сделать так, чтобы разные иноязычные слова находились в разных записях, но те из них, которые соответствуют одному русскому слову, открывались в одной статье.

Осталось только переделать базу, а я не знал как.
 
Сверху