PHP 简单 HTML DOM 解析器:访问自定义属性

2024-04-13php开发问题
4

本文介绍了PHP 简单 HTML DOM 解析器:访问自定义属性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我想访问我添加到 HTML 文件中某些元素的自定义属性,这是 littleBox="somevalue" 属性的示例

I want to access a custom attribute that I added to some elements in an HTML file, here's an example of the littleBox="somevalue" attribute

<div id="someId" littleBox="someValue">inner text</div>

以下不起作用:

foreach($html->find('div') as $element){
 echo $element;
 if(isset($element->type)){
 echo $element->littleBox;
   }
}

我看到一篇有类似问题的文章,但由于某种原因我无法复制它.这是我尝试过的:

I saw an article with a similar problem, but I couldn't replicate it for some reason. Here is what I tried:

function retrieveValue($str){
if (stripos($str, 'littleBox')){//check if element has it
$var=preg_split("/littleBox="/",$str);
//echo $var[1];
$var1=preg_split("/"/",$var[1]);
echo $var1[0];
}
else
return false;
}

每当我调用 retrieveValue() 函数时,什么都没有发生.$element (在上面的第一个 PHP 示例中)不是字符串吗?我不知道我是否错过了什么,但它没有返回任何东西.

When ever I call the retrieveValue() function, nothing happens. Is $element (in the first PHP example above) not a string? I don't know if I missed something but it's not returning anything.

这是完整的脚本:

<?php
require("../../simplehtmldom/simple_html_dom.php");

if (isset($_POST['submit'])){

$html = file_get_html($_POST['webURL']);

// Find all images 
foreach($html->find('div') as $element){
    echo $element;
   if(isset($element->type)!= false){
    echo retrieveValue($element);
   }
}
}


function retrieveValue($str){
if (stripos($str, 'littleBox')){//check if element has it
$var=preg_split("/littleBox="/",$str);
//echo $var[1];
$var1=preg_split("/"/",$var[1]);
return $var1[0];
}
else
return false;
}

?>

<form method="post">
Website URL<input type="text" name="webURL">
<br />
<input type="submit" name="submit">
</form>

推荐答案

你试过了吗:

$html->getElementById("someId")->getAttribute('littleBox');

您也可以使用 SimpleXML:

You could also use SimpleXML:

$html = '<div id="someId" littleBox="someValue">inner text</div>';
$dom = new DOMDocument;
$dom->loadXML($html);
$div = simplexml_import_dom($dom);
echo $div->attributes()->littleBox;

我建议不要使用正则表达式来解析 html,但这部分不应该是这样的:

I would advice against using regex to parse html but shouldn't this part be like this:

$str = $html->getElementById("someId")->outertext;
$var = preg_split('/littleBox="/', $str);
$var1 = preg_split('/"/',$var[1]);
echo $var1[0];

另请参阅此答案https://stackoverflow.com/a/8851091/1059001

这篇关于PHP 简单 HTML DOM 解析器:访问自定义属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

PHP实现DeepL翻译API调用
DeepL的翻译效果还是很强大的,如果我们要用php实现DeepL翻译调用,该怎么办呢?以下是代码示例,希望能够帮到需要的朋友。 在这里需要注意,这个DeepL的账户和api申请比较难,不支持中国大陆申请,需要拥有香港或者海外信用卡才行,没账号的话,目前某宝可以...
2025-08-20 php开发问题
168

PHP通过phpspreadsheet导入Excel日期数据处理方法
PHP通过phpspreadsheet导入Excel日期,导入系统后,全部变为了4开头的几位数字,这是为什么呢?原因很简单,将Excel的时间设置问文本,我们就能看到该日期本来的数值,上图对应的数值为: 要怎么解决呢?进行数据转换就行,这里可以封装方法,或者用第三方的...
2024-10-23 php开发问题
287

mediatemple - 无法使用 codeigniter 发送电子邮件
mediatemple - can#39;t send email using codeigniter(mediatemple - 无法使用 codeigniter 发送电子邮件)...
2024-08-23 php开发问题
11

Laravel Gmail 配置错误
Laravel Gmail Configuration Error(Laravel Gmail 配置错误)...
2024-08-23 php开发问题
16

将 PHPMailer 用于 SMTP 的问题
Problem with using PHPMailer for SMTP(将 PHPMailer 用于 SMTP 的问题)...
2024-08-23 php开发问题
4

关于如何在 GoDaddy 服务器中使用 PHPMailer 设置 SMTP 的问题
Issue on how to setup SMTP using PHPMailer in GoDaddy server(关于如何在 GoDaddy 服务器中使用 PHPMailer 设置 SMTP 的问题)...
2024-08-23 php开发问题
17