Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.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
HTML之后的PHP正则表达式<;br>; 商店销售价格: 不适用_Php_Regex_Preg Match - Fatal编程技术网

HTML之后的PHP正则表达式<;br>; 商店销售价格: 不适用

HTML之后的PHP正则表达式<;br>; 商店销售价格: 不适用,php,regex,preg-match,Php,Regex,Preg Match,我想匹配所有第一行,然后从第二行获取N/A 这是我的赛前声明: <td><b>Shop Selling Price:</b><br> N/A</td> preg_match(/Shop售价\:(.*?)/si“,$content,$Shop); 如果N/A在同一条线上,它工作正常,但在下一条线上时不工作。我尝试了\r和\n,但什么都没有。此代码工作正常: preg_match("/<td><b>Shop Se

我想匹配所有第一行,然后从第二行获取N/A

这是我的赛前声明:

<td><b>Shop Selling Price:</b><br>
N/A</td>
preg_match(/Shop售价\:
(.*?)/si“,$content,$Shop);
如果N/A在同一条线上,它工作正常,但在下一条线上时不工作。我尝试了\r和\n,但什么都没有。

此代码工作正常:

preg_match("/<td><b>Shop Selling Price\:<\/b><br>(.*?)<\/td>/si", $content, $shop);

我建议检查
$content
,看看它是否与上面的字符串匹配


另外,您不需要
\:
只要
就可以了。

使用DOM解析器。这将为您节省很多麻烦。您必须搜索“全局”。在正则表达式后面的si后面放一个g,如下所示:“/regex stuff/sig”真的,在
N/a
周围包装一个
,然后使用
\DOMDocument
…你确定
$content
包含两行吗?@Cromax/g是不需要的,因为OP只是试图匹配字符串中的一个内容。view-source:这就是源代码。这条线一直延伸到很远的地方。我看到它的方式与您在测试代码中发布它的方式相同..我复制并粘贴了您的代码,得到了
array(0){}
whyyyyyyy。太困惑了,哈哈。我注意到匹配的字符串长度是5字节。如果要删除匹配字符串开头的换行符,可以使用
preg\u match(“/Shop售价:
\R*(.*?)/si”,$content,$Shop)
如果您转储了
$content
您看到完整的HTML源代码了吗?
<?php
$content = "<td><b>Shop Selling Price:</b><br>
N/A</td>";
preg_match("/<td><b>Shop Selling Price\:<\/b><br>(.*?)<\/td>/si", $content, $shop);
var_dump($shop);
?>