Php 如何从html源页面获取数字?
我正在尝试检索instagram页面上的计数。我似乎无法正确使用正则表达式,非常感谢您的帮助 以下是我想要的:Php 如何从html源页面获取数字?,php,regex,Php,Regex,我正在尝试检索instagram页面上的计数。我似乎无法正确使用正则表达式,非常感谢您的帮助 以下是我想要的: y":{"count": 这是字符串的开头,我想要后面的4个数字 $string = preg_replace("{y"\"count":([0-9]+)\}","",$code); 有人建议这样做,但我无法正确设置格式…此regexp应捕获您在第一组中查找的值: \{"count":([0-9]+)\} 将其与preg\u match\u all函数一起使用,可以轻松地将所需
y":{"count":
这是字符串的开头,我想要后面的4个数字
$string = preg_replace("{y"\"count":([0-9]+)\}","",$code);
有人建议这样做,但我无法正确设置格式…此regexp应捕获您在第一组中查找的值:
\{"count":([0-9]+)\}
将其与preg\u match\u all
函数一起使用,可以轻松地将所需内容捕获到数组中(您使用的preg\u replace
不是用于检索数据,而是用于……很好地替换数据)
您的regexp无法工作,因为您没有逃过花括号。此外,您没有输入计数量词(在我的示例中为加号),因此它只会捕获第一个数字。您还没有发布字符串,因此只能猜测正则表达式应该是什么。。。所以我会回答为什么你的密码会失败
preg_replace('"followed_by":{"count":\d')
这与正确的preg\u replace
用法相差甚远。您需要为它提供替换字符串和要搜索的字符串。看
您的第二个用法:
$string = preg_replace(/^y":{"count[0-9]/","",$code);
更接近,但preg_replace
是全局的,因此这将搜索整个文件(如果没有锚定,则会搜索),并将查找到的值替换为零。我想你真正想要的是使用preg\u match
$string = preg_match('/y":\{"count(\d{4})/"', $code, $match);
$counted = $match[1];
这假设你的正则表达式已经有点正确了
根据您的更新:
演示:
PHP演示:
我删除了要求正则表达式从字符串开头开始的^
,对{
进行了转义,并将\d
设置为4个字符长。()
是一个捕获组,存储在其中找到的任何内容,在本例中是4个数字
此外,如果这不仅仅是为了学习,您应该为此做好准备,在某个时候停止工作,因为服务提供商可能会更改格式。API是一种更安全的方法。有没有不使用的原因?我正在尝试练习我的正则表达式我要找的是以“y”开头的:{”“count”之后我需要4个数字。你知道下面的正则表达式不起作用吗?$string=preg_replace(/^y):{“count[0-9]/”,“,$code);
{4}
是前一个字符中的4个。你应该看看关于范围和量词的教程。{
在你的正则表达式中也应该转义。你的preg\u replace
用法也不正确,参数1是regex,2是replace value,3是string/haystack。我不确定你想在那里做什么。不过你可能想要preg\u match
但是。你能发布一个示例字符串吗。我只是尝试了一下,但没有正确的格式?有什么想法吗?@你说的“格式化”是什么意思"?你得到了什么结果?是的,我主要是想学习正则表达式。你做得很好。感谢你在你的描述中解释正则表达式的所有元素。非常感谢:)祝你学习顺利,我建议你使用regex101.com,它可以让你测试正则表达式并给出解释。还可以查看和。还有最后一个注意事项查看mo修改器,这可能会影响正则表达式为什么对您有效/无效。嘿@chris85希望您能理解。我在过去的一个小时里一直在处理这个逃逸。“(\d+)views'这是我在preg_match中的第一个参数,但没有找到任何东西。我认为这与“”有关。我尝试了所有可能的转义组合…有什么想法吗?当我删除“”时,它可以找到一个数字,但当它在那里时就找不到了。你能发布你的实际正则表达式吗,是/(\d+)视图/
?如果是这样,
需要是
,因为/
是您的分隔符。
$code = 'y":{"count:1234';
$string = preg_match('/y":\{"count:(\d{4})/', $code, $match);
$counted = $match[1];
echo $counted;