2015-03-07 3 views
2

Привет У меня есть сценарий, я делаю, что хватает информации тв канала от апи URL, но я пришел к проблеме АНИ выводит простые текстовые информацию, как показано нижеPHP регулярное выражение необходима помощь метания ошибку

BBC1 (Now : BBC News Next : BBC News)) 

все я хотят и это название канала BBC1, поэтому я создал регулярное выражение строку лучшее, что я мог, чтобы удалить то, что не был нужен код ниже

$name = preg_replace("/\([^)]+\)/","",$html); 

Но проблема в том, что продолжает бросать ошибку говоря неожиданный т глаголом, и это также листья) с конца, и это приводит меня к другой проблеме т освобожданный) в конце я использовать этот код

$name = str_replace(")","",$name); 

с этим кодом) внутри «» показывают в качестве закрывающей скобки для первой в вместо одного перед;

может кто-то один heplp мне, что я все нужно удалить, кроме имен перед первым (

+1

Так вы просто хотите, чтобы захватить 'BBC1' из вашей строки? – Rizier123

+0

да все, что мне нужно, это слова перед первым (но код, который у меня порождает ошибки и листья в конце) в конце – saveonsky

+0

FYI: Вы можете принять ответ, как вам помогли и решили вашу проблему! (http://meta.stackexchange.com/q/5234) – Rizier123

ответ

1

Это должно работать для вас:

(Здесь я просто использовать preg_match_all() получить Everthing ((.*?)) перед первым ()

<?php 

    $str = "BBC1 (Now : BBC News Next : BBC News))"; 
    preg_match_all("/(.*?)\(/", $str, $matches); 
    echo $matches[1][0]; 

?> 

Выход:

BBC1 
+0

это работает только для выбранных каналов. У некоторых есть имена, подобные E4 +1 и Sky Movies Disney с более чем одним словом в точке ведьмы, он возвращает только E4 или SKy – saveonsky

+0

@ saveonsky см. мой обновленный ответ – Rizier123

+0

Это, кажется, работает потрясающе, спасибо вам, я собираюсь узнать больше о regex – saveonsky

0

Если вам нужно только, чтобы захватить все, что перед первым использованием (preg_mach() и его результат, как:

preg_match('/([^\(]+)\s+\(/', $html, $preg_result); // one or more not '(' characters, than one or more space, than '(' character 

var_dump($preg_result); // Required string will be in $preg_result[1]