Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.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
preg_match、regexp、php、从html提取文本_Php_Regex_Preg Match - Fatal编程技术网

preg_match、regexp、php、从html提取文本

preg_match、regexp、php、从html提取文本,php,regex,preg-match,Php,Regex,Preg Match,我试图从中提取“佛罗里达(FL)”。 我的代码是 //获取位置 $pattern=“/(状态):(.*)/”; preg_match_all($pattern,$htmlContent,$matches); 打印(匹配项); 知道为什么不起作用吗?我相信原因是因为您试图匹配的字符串在下一行。您需要使用以下选项启用多行模式: $pattern = "/\(State\)<\/i>\:<\/td>(.*)<\/td>/m"; $pattern=“/\(State

我试图从中提取“佛罗里达(FL)”。 我的代码是 //获取位置 $pattern=“/(状态):(.*)/”; preg_match_all($pattern,$htmlContent,$matches); 打印(匹配项);
知道为什么不起作用吗?

我相信原因是因为您试图匹配的字符串在下一行。您需要使用以下选项启用多行模式:

$pattern = "/\(State\)<\/i>\:<\/td>(.*)<\/td>/m";
$pattern=“/\(State\)\:(.*)/m”;
但请记住:试图用正则表达式解析HTML会让邪恶的孩子流下处女的血。见:


当正则表达式中有
(State)
时,它将作为一个组匹配输入字符串中的术语
State
,而不会匹配输入字符串中的文字括号-您需要像使用
/
s-
/\(State\)一样对它们进行转义这似乎是SO的一贯口号:尽可能避免使用regexp解析html。这不是工作的工具。我建议使用HTML解析器,但看了网页后,我改变了主意。。。没有类,没有ID,没有css;很难找到State这个词。
$pattern = "/\(State\)<\/i>\:<\/td>(.*)<\/td>/m";