Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 需要正则表达式帮助(preg\u match\u all)_Regex_Preg Match All - Fatal编程技术网

Regex 需要正则表达式帮助(preg\u match\u all)

Regex 需要正则表达式帮助(preg\u match\u all),regex,preg-match-all,Regex,Preg Match All,这是我的形象 <img src="" data-original="'.$this->url.'/img/image'.$row['id'].'.jpg" id="song-art'.$row['id'].'" alt="'.$row['title'].'" class="animated fadeIn load-delay"> 我不太擅长正则表达式,为什么它不起作用?这个正则表达式应该匹配双引号中的所有内容,而不是双引号 data-original=\"([^\"]*)\

这是我的形象

<img src="" data-original="'.$this->url.'/img/image'.$row['id'].'.jpg" id="song-art'.$row['id'].'"  alt="'.$row['title'].'" class="animated fadeIn load-delay">

我不太擅长正则表达式,为什么它不起作用?

这个正则表达式应该匹配双引号中的所有内容,而不是双引号

data-original=\"([^\"]*)\"
编辑: 选择id为XXXX的特定艺术家的原始数据

data-original=\"([^\"]*)\".*id=\"song-artXXXX\"
因此,在php中,它应该类似于:

$id_artist= 'XXXX';
preg_match_all('data-original=\"([^\"]*)\".*id=\"song-art'.$id_artist.'\"', ....);

将XXXX替换为您要查找的艺术家的id,并将其他参数添加到函数中。

我尝试了此操作,但仍然不起作用。
preg\u match\u all(“//iU”,$track[0],$art)
我认为您没有正确使用reg_match_all()。为什么要将此项添加到模式中:id=“song art.”$\u GET['id']..”*“>/iU?我使用它来选择正确的图像(同一页面中有不同的歌曲艺术)好的,那么你想选择某个艺术家的当前原始数据。我将使用新信息编辑以改进正则表达式。我尝试了这个
preg\u match\u all('data-original=\'([^\']*)\“*id=\'song art.$\u GET['id'].'.*“>/iU',$track[0],$art);
然后我尝试了
$TMPL['open\u graph\u twt']='';
但它同样不起作用。不要使用正则表达式来解析HTML,使用DOM解析库。@Barmar谢谢,我可以将此解决方案视为答案吗?它太复杂了,我无法将其作为答案来写,尤其是因为我不知道您的整个文档布局。请阅读如何使用
DOMDocument
,然后自己尝试。
$id_artist= 'XXXX';
preg_match_all('data-original=\"([^\"]*)\".*id=\"song-art'.$id_artist.'\"', ....);