嗨我有一个脚本我正在制作从api url抓取电视频道信息,但我遇到了一个问题api输出纯文本信息如下
BBC1 ( Now : BBC News Next : BBC News ))
所有我想要和需要的是频道名称BBC1所以我创建了一个正则表达式字符串,我可以删除不需要的代码在下面
$name = preg_replace("/\([^)]+\)/","",$html);
但问题是它一直在抛出一个错误,说出意想不到的动词,它也离开了)从最后也带来另一个问题摆脱了)最后我使用这个代码
$name = str_replace(")","",$name);
使用此代码)内部""显示为第一个的结束括号而不是之前的结束;
有些人可以说我需要除了第一个之前的名字之外删除所有内容(
答案 0 :(得分:1)
这应该适合你:
(这里我只是使用preg_match_all()
来获取第一个(.*?)
之前的(
}
<?php
$str = "BBC1 ( Now : BBC News Next : BBC News ))";
preg_match_all("/(.*?)\(/", $str, $matches);
echo $matches[1][0];
?>
输出:
BBC1
答案 1 :(得分: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]