preg_match_all():未知的修饰符'c'

时间:2014-10-17 08:52:21

标签: php

我的代码中出现此错误:

Warning: preg_match_all(): Unknown modifier 'c' in C:\xampp\htdocs\stage\ripper.php on line 6

你能告诉我这是什么吗?

$htmlcode = file_get_contents($url); 
$pattern = "/itemprop=\"description\"\>(.*)\<\/div\>(.*)\<li\>Taal:(.*)\<\/li\>(.*)\>(.*)\<‌​\/div\>/class=\"noscript\"\>(.*)\<\/div\>/sU";    
preg_match_all($pattern, $htmlcode, $matches); # This is line 6:

我已经尝试找到这样的东西,却找不到任何东西......

1 个答案:

答案 0 :(得分:3)

问题出在$pattern - 你还没有逃脱所有斜线:

$pattern = "/itemprop=\"description\"\>(.*)\<\/div\>(.*)\<li\>Taal:(.*)\<\/li\>(.*)\>(.*)\<‌​\/div\>/class=\"noscript\"\>(.*)\<\/div\>/sU"

在“课堂”前面有一个没有逃脱的斜线。修复应该是显而易见的......

通过在正则表达式周围使用不同的分隔符,您可以让自己的生活更轻松,这样您就不必逃避斜线。以下是使用#代替/的示例:

$pattern = "#itemprop=\"description\">(.*)</div>(.*)<li>Taal:(.*)</li>(.*)>(.*)<div class=\"noscript\">(.*)</div>#sU";

您的正则表达式中还存在许多错误 - 无效的html等,因此它与有效的html文档中的任何内容都不匹配。我已经解决了大部分问题,但这部分看起来不正确:

</li>(.*)>(.*)

我不知道你要在那里设置第一个捕捉括号,但你可能会得到类似</ul<li的内容。