You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PHP HTML DOM提取特定单词后的指定字符串

用PHP的HTML DOM工具提取指定字符串的方案

嘿,这个需求我刚好处理过类似的,给你一步步拆解怎么做:

第一步:用DOMDocument定位到目标script内容

首先,咱们得先把HTML里的<div class="abc">标签找出来,再拿到里面的<script>代码。PHP的DOMDocument可以搞定这部分,但要注意默认的HTML解析可能会抛出警告(比如遇到不规范的HTML),所以先把警告屏蔽掉更稳妥。

示例代码:

// 替换成你实际的HTML内容,也可以从文件/URL加载
$html = <<<HTML
<div class="abc">
    <script type="text/javascript">
        var flashvars = { 
            word : "/path/to/your/target/file.mp4",
            otherParam : "some extra value"
        };
    </script>
</div>
HTML;

// 屏蔽HTML解析时的警告
libxml_use_internal_errors(true);
$dom = new DOMDocument();
$dom->loadHTML($html);
libxml_clear_errors();

// 用XPath精准定位class为abc的div
$xpath = new DOMXPath($dom);
$abcDivs = $xpath->query('//div[@class="abc"]');

if ($abcDivs->length > 0) {
    // 获取div内的第一个script标签(如果有多个,可根据type进一步筛选)
    $targetScript = $abcDivs->item(0)->getElementsByTagName('script')->item(0);
    if ($targetScript) {
        $scriptContent = $targetScript->nodeValue;
        // 接下来处理script里的内容...
    }
}

第二步:用正则提取word对应的path值

拿到script内容后,就可以用正则表达式匹配word :后面的path值了。这里考虑了几种常见场景:path可能用单引号、双引号包裹,或者冒号前后有/无空格。

推荐的正则匹配代码:

if (preg_match('/word\s*:\s*["\']?([^"\',}]+)["\']?/', $scriptContent, $matches)) {
    $extractedPath = $matches[1];
    echo "提取到的path值:" . $extractedPath;
} else {
    echo "未找到对应的path值";
}

正则逻辑简单解释

  • word\s*::匹配word关键词,后面允许任意数量的空格,再匹配冒号
  • \s*:匹配冒号后任意数量的空格
  • ["\']?:匹配可选的单/双引号(有些场景下path可能没有引号包裹)
  • ([^"\',}]+):捕获引号、逗号、大括号之外的内容——也就是我们要的path值
  • ["\']?:匹配结尾可选的引号

小提醒

如果你的实际场景中,flashvars里的word写法有特殊情况(比如用了不同的分隔符、换行),可以根据实际结构微调正则表达式的匹配规则,确保精准捕获目标内容。

内容的提问来源于stack exchange,提问作者Ajit Raghav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:43:51