как я могу правильно сортировать с preg_match? - PullRequest
0 голосов
/ 19 марта 2012

Я пытаюсь изменить строку в файле PHP, которая имеет дело с данными, поступающими из XML (около 600 станций). PHP делает эти данные доступными для медиа-плеера. Оригинальная линия это

if (($title <> "")&& (strpos($link,"<") === false)&& preg_match("/Cha/i",$lang)) 

это дает мне около 50 станций, я хочу добавить несколько станций, у которых не имеют "Cha" в $ lang, но у "Soprts" и есть "Китай" в их $ название.

Итак, я написал такую ​​строку

if (($title <> "")&& (strpos($link,"<") === false)&& preg_match("/Cha/i",$lang)&& (preg_match("/China/i",$title)||preg_match("/Sports/i",$lang)))

Но теперь я получаю меньше результатов, чем раньше, теперь я получаю только те станции, которые имеют CHA в $ lang и "China" в $ title. Все соответствующие станции, имеющие CHA в $ lang, но не «Китай» в $ title, исключаются.

Поскольку у меня очень ограниченные знания в PHP, я не знаю, как сделать правильную сортировку, кто-то предложил мне использовать стрипы, но я не знаю, как их использовать, и его пример не сработал. OK

Ответы [ 2 ]

1 голос
/ 19 марта 2012

Вы перевернули и и или в своем новом коде.Вы хотите:

if (($title <> "")&& (strpos($link,"<") === false)&& (preg_match("/Cha/i",$lang)|| (preg_match("/China/i",$title)&&preg_match("/Sports/i",$lang))))
0 голосов
/ 19 марта 2012

Вы не надеваете браслеты правильно.Вы можете добавить несколько параметров в регулярное выражение, используя | (означает OR), попробуйте это:

if (($title <> "") && (strpos($link,"<") === false) && preg_match("/CHA|China|Sports/i",$lang))
...