gpt4 book ai didi

php - 使用正则表达式和 php 从 html 中提取 javascript 对象

转载 作者:行者123 更新时间:2023-12-02 03:35:54 24 4
gpt4 key购买 nike

我正在尝试从包含常用 HTML 标记的页面中提取特定的 JavaScript 对象。

我尝试使用正则表达式,但当 HTML 包含换行符时,我似乎无法让它正确解析 HTML。

示例如下:https://regex101.com/r/b8zN8u/2

我尝试提取的 HTML 如下所示:

<script>
DATA.tracking.user = {
age: "19",
name: "John doe"
}
</script>

使用以下正则表达式:DATA.tracking.user=(.*?)}

<?php
$re = '/DATA.tracking.user = (.*?)\}/m';
$str = '<script>
DATA.tracking.user = { age: "19", name: "John doe" }
</script>';

preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);

如果我解析 DATA.tracking.user = {age: "19", name: "John doe"} 没有任何换行符,那么它工作正常,但如果我尝试解析:

DATA.tracking.user = { 
age: "19",
name: "John doe"
}

它不喜欢处理换行符。

任何帮助将不胜感激。

谢谢。

最佳答案

您需要在模式中指定空格 (\s),以便解析包含换行符的 javascript 代码。

例如,如果您使用以下代码:

<?php
$re = '/DATA.tracking.user = \{\s*.*\s*.*\s*\}/';
$str = '<script>
DATA.tracking.user = {
age: "19",
name: "John doe"
}
</script>';

preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
print_r($matches[0]);
?>

您将得到以下输出:

Array
(
[0] => DATA.tracking.user = {
age: "19",
name: "John doe"
}
)

关于php - 使用正则表达式和 php 从 html 中提取 javascript 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50223748/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com