php正则表达式帮助需要抛出一个错误
嗨,我有一个脚本,我正在做,从api的网址抓取电视频道信息,但我遇到了一个问题,api输出纯文本信息如下php正则表达式帮助需要抛出一个错误,php,regex,Php,Regex,嗨,我有一个脚本,我正在做,从api的网址抓取电视频道信息,但我遇到了一个问题,api输出纯文本信息如下 BBC1 ( Now : BBC News Next : BBC News )) 我想要和需要的只是频道名BBC1,所以我创建了一个regex字符串,尽我所能删除不需要的内容。下面是代码 $name = preg_replace("/\([^)]+\)/","",$html); 但问题是,它不断抛出一个错误,表示意外的t动词,它也会从结尾处离开),这就给我带来了另一个问题,以解决)在我使
BBC1 ( Now : BBC News Next : BBC News ))
我想要和需要的只是频道名BBC1,所以我创建了一个regex字符串,尽我所能删除不需要的内容。下面是代码
$name = preg_replace("/\([^)]+\)/","",$html);
但问题是,它不断抛出一个错误,表示意外的t动词,它也会从结尾处离开),这就给我带来了另一个问题,以解决)在我使用此代码的结尾
$name = str_replace(")","",$name);
使用此代码,内部“”显示为第一个括号的结束括号,而不是之前的括号
有人能告诉我,除了第一个名字之前的名字,我需要删除所有东西(这应该适合你: (在这里,我只需要在第一个
(
)之前获取所有内容((.*)
)
如果您只需要在第一次
(
之前抓取所有内容,请使用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]
所以你只想从你的字符串中抓取
BBC1
?是的,我需要它在第一个单词之前的单词(但是我抛出了错误并留下了代码)在结尾处。fyi:你可以接受这个答案,它是如何帮助了你,解决了你的问题!()这只适用于选定的频道,有些频道的名字像so E4+1和Sky Movies迪斯尼在巫婆点有不止一个单词它只返回E4或Sky这似乎很有效谢谢你这么多我将尝试了解更多regex@saveonsky不客气!祝你有一个愉快的一天:D(仅供参考:和)@Rizier123我不是下一个投票人,但是你可以使用echo preg\u replace('~\s*\(.*\),''$str);
或echo preg\u replace('~\s*\(.*.''$str);
。@AvinashRaj是的,这也可以工作,OP甚至可以在一行中输出它,当他使用preg\u replace()
!
BBC1
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]