как я могу правильно сортировать с помощью preg_match?

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

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

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

Поэтому я написал строку, подобную этой

 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, я не знаю, как правильно сортировать, кто-то предложил мне использовать stripos, но я не знаю, как его использовать, и его пример не работал.

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

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

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

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