2013-02-20 2 views
0

Я новичок в программировании на PHP. Мне нужна твоя помощь, чтобы закончить домашнюю работу.PHP Explode Words

Я хочу взорвать следующее предложение: Я люблю свою группу и свою кошку в массивы.

Но мне нужно использовать пространство и слово и в качестве разделителей. Так оно и должно стать, как это:

$arr[0] -> I 
$arr[1] -> love 
$arr[2] -> my 
$arr[3] -> band 
$arr[4] -> my 
$arr[5] -> cat 

Я попытался, как это:

$words = "I love my band and my cat" 
$stopwords = "/ |and/"; 
$arr = explode($stopwords, $words); 

Но проблема, он также удаляет символы и от слова группы поэтому она становится так:

$arr[0] -> I 
$arr[1] -> love 
$arr[2] -> my 
$arr[3] -> b 
$arr[4] -> my 
$arr[5] -> cat 

Это не то, что я хочу. Я хочу удалить слово, которое точно и, а не слово, которое содержит и символов.

Есть ли способ решить это? Кто-нибудь может мне помочь? Большое спасибо .. :-)

+1

'explode' предназначен для фиксированных строк. 'split' и' preg_split' предназначены для повторных выражений, как вы пробовали. – mario

+0

Поскольку вы признались, что это домашняя работа, я чувствую, что не могу дать вам ответ. Но я предлагаю вам прочитать это http://www.regular-expressions.info/tutorial.html. также, используйте preg_split, explode не может использовать регулярные выражения. – Galen

+0

Если задача не в регулярном выражении, логика должна сначала взорвать ее, а затем удалить (удалить) ненужные элементы. – rlatief

ответ

-4

Попробуйте это:

<?php 
$words = "I love my band and my cat"; 
$clean = str_replace(" and",'',$words); 
$array = explode(" ",$clean); 
print_r($array); 
?> 
+0

ему нужно удалить слово и из массива –

+0

Теперь он делает. Попробуй еще раз. – ionFish

+0

До тех пор, пока ему не понадобится использовать «а также мою собаку» в качестве строки – ChrisK

3

Если вы хотите, чтобы избежать расщепления из and в середине слова, вы должны фильтровать список результатов (array_diff), или используйте более сложное регулярное выражение. Тогда также рассмотреть preg_match_all вместо расщепления:

preg_match_all('/ (?! \b and \b) (\b \w+ \b) /x', $input, $words); 

Это будет искать только последовательные слова-символы, а не разбивая на пространствах. И утверждение ?! пропустит вхождения and.

+0

* См. Также [Альтернативы RegexBuddy с открытым исходным кодом] (http://stackoverflow.com/questions/89718/is-there) и [Online regex testing] (http://stackoverflow.com/questions/32282/regex-testing) для некоторых полезных инструментов или [RegExp.info] (http://regular-expressions.info/) для лучшего учебника. – mario