2012-07-14 95 views
0

我使用CSV导入工具,并做了一些研究,以获取导出结果中的url,因为它具有特定的导入语法。抓取网址直到具体的词

这是一个导入文本的例子。

... IMG SRC = “MULTIFEED_START_7_http://www.suppliertestcase.com/423_1.jpgMULTIFEED_END_7_”

所以我想抓住图像的URL是文本MULTIFEED_START_7_之间(可能是6或5 ,...也)和文本MULTIFEED_END_7(同样可以是6或5,...)

经过一些测试想通了,它工作正常:

preg_match_all('#(HTTP:// (。*)。(gif | png | jpg))#i',$ post [0] - > post_content,$ matches);

正确地获取所有的URL,如果它以.jpg结尾,gif或png格式

输出为http://www.suppliertestcase.com/423_1.jpg

可是...现在我的问题。

某些供应商在导入时不会提供.jpg或.gif扩展名的产品照片网址。 他们只是给FE这个URL(只目录的URL没有文件扩展名):

IMG SRC = “MULTIFEED_START_7_http://www.suppliertestcase.com/productphoto/MULTIFEED_END_7_”

所以grep的输出应该是http://www.suppliertestcase.com/productphoto/ 我如何抓取以http://开头并且在MULTIFEED_END文本前的所有内容?

回答

0
preg_match_all('~(?<=(MULTIFEED_START_\d_))(.+)(?=(MULTIFEED_END_\d_))~',$src,$matches); 

试试这个。

+0

嗨Mohammer,谢谢你的回复。 我用$ src替换为$ post [0] - > post_content,但它不起作用。 但是,如何定义MULTIFEED_END _...结束语对我来说是一个很好的提示。我会尝试几个与我使用的原始grep的组合,它可以与.jpg,.gif或.png一起使用,在末尾 preg_match_all('#(http://(。*)。(gif | png | jpg)) #i',$ post [0] - > post_content,$ matches); – Dan 2012-07-15 03:12:45

+0

很奇怪。我再次测试它,它为我工作...对不起! – Mohammer 2012-07-15 16:36:53

+0

无论如何感谢穆罕默德。 只要图像扩展名存在,preg作品就完美无缺。 ('#(http:\/\ /(。*)\。(gif | png | jpg))#i',$ post [0] - > post_content,$ matches); 抓取从http://部分开始的所有内容,直到它检测到.jpg或.gif或.png(包含在outpot结果中的.jpg或.gif或.png) 我尝试了几个组合,分别是工作preg_match_all的开始部分和你的(?=(MULTIFEED_END_ \ d_)定义来检测MULTIFEED_END文本,但此时没有任何结果 – Dan 2012-07-15 17:22:46