解析dom元素时,JqueryUI滑块不起作用

时间:2015-12-18 06:55:16

标签: javascript php jquery html jquery-ui

我使用简单的HTML dom解析器。 一切都适用于我的代码,但jqueryui不工作,对于一些网站,它不显示图像。 请查看实际网站here 请尝试使用简单的HTML dom parser

请在带有网址的文本字段中输入网址。 您可以看到未加载图像且滑块无法正常工作。 这是我的代码

<?php
include_once 'simple_html_dom.php';
$data = new simple_html_dom();

if ( isset($_REQUEST['url_name']) ) {
    if ( strpos($_REQUEST['url_name'], "http://") === false && strpos($_REQUEST['url_name'], "//") === false ) {
        $_REQUEST['url_name']="http://".$_REQUEST['url_name'];
    }

    $url_name = $_REQUEST['url_name'];
    if ( strpos($_REQUEST['url_name'], "/") === false ) {
        $url_name = $_REQUEST['url_name'].'/';
    }

    // Load HTML from an URL 
    $data->load_file($_REQUEST['url_name']);
    foreach ( $data->find('img') as $element ) {
        $element->target='_blank';
        if (    strpos($element, ".com") === false
             && strpos($element, ".net") === false
             && strpos($element, ".org") === false
             && strpos($element, "http://") === false
             && strpos($element, "https://") === false
           ){
            $element->src=$url_name.$element->src;
        }
    }

    foreach ( $data->find('style') as $element ) {
        if (    strpos($element, ".com") === false
             && strpos($element, ".net") === false
             && strpos($element, ".org") === false
             && strpos($element, "http://") === false
             && strpos($element, "https://") === false
           ){
            $element->src=$url_name.$element->src;
        }
    }

    foreach ( $data->find('script') as $element ) {
        if (    strpos($element, ".com") === false
             && strpos($element, ".net") === false
             && strpos($element, ".org") === false
             && strpos($element, "http://") === false
             && strpos($element, "https://") === false
           ){
            $element->src=$url_name.$element->src;
        }
    }

    foreach ( $data->find('link') as $element ) {
        if (     strpos($element, ".com") === false
             && strpos($element, ".net") === false
             && strpos($element, ".org") === false
             && strpos($element, "http://") === false
             && strpos($element, "https://") === false
           ){
            $element->href=$url_name.$element->href;
        }
    }

    foreach ( $data->find('a') as $element ) {
        if (    strpos($element->href, ".com") === false
             && strpos($element->href, ".net") === false
             && strpos($element->href, ".org") === false
             && strpos($element->href, "http://") === false
             && strpos($element->href, "https://") === false
           ){
            $element->href = "form_submit.php?url_name=".$url_name.$element->href;
        } else {
            $element->href = "form_submit.php?url_name=".$element->href;
        }
    }

    echo $newHtml;
}
?>

1 个答案:

答案 0 :(得分:0)

你想做什么?

我猜你想要一个包含所有托管的img,css,js和url的列表。

  1. $newHtml从未在您的代码中的任何位置定义过。
  2. 你的simple_html_dom课程是什么?我假设它是这样的:http://simplehtmldom.sourceforge.net/
    • 要么就是这样,要么最后打算echo $data;
  3. 功能!至少!
  4. 你必须弄明白其余的

    由于我并不真正了解你的目标,simple_html_dom实际上是什么,我能做的就是向你介绍一些更高级的东西 编码概念。

    • 正确使用空格进行代码样式设计
      • 有些人会不同意我的选择,但这会大大提高可读性。
    • 如果你的线路很长,请将它们分开。
    • 如果您的代码中包含几乎完全相同的代码块,那么它应该是一个函数。
    • 调试/故障排除时,要么回显所有内容,要么使用调试器(xdebug)。
    • 更好地评论你的代码,我不会在这里教你为什么总是这样。

    调整后的代码:

    <?php
    include_once 'simple_html_dom.php';
    $data = new simple_html_dom();
    
    if ( isset($_REQUEST['url_name']) ) {
        if ( strpos($_REQUEST['url_name'], "http://") === false && strpos($_REQUEST['url_name'], "//") === false ) {
            $_REQUEST['url_name']="http://".$_REQUEST['url_name'];
        }
    
        $data->my_url_name = $_REQUEST['url_name'];
        if ( strpos($_REQUEST['url_name'], "/") === false ) {
            $data->my_url_name = $_REQUEST['url_name'].'/';
        }
    
        echo "<div style='border:1px solid blue;'>";
    
            // Load HTML from an URL
            $data->load_file($_REQUEST['url_name']);
    
            modifyUrls($data, 'img', array('target' => '_blank'));
            modifyUrls($data, 'style');
            modifyUrls($data, 'script');
            modifyUrls($data, 'link', array(), 'href');
    
            foreach ( $data->find('a') as $element ) {
                if ( checkurl($element->href) ) {
                    echo $element->href = "form_submit.php?url_name=". $data->my_url_name . $element->href;
                } else {
                    echo $element->href = "form_submit.php?url_name=". $element->href;
                }
                echo "<br>";
            }
    
            echo "</div><div style='border:1px solid red;'>";
            echo $data;
            echo "</div>";
        }
    
    function modifyUrls(&$dataObj, $target, $options = array(), $urlAttribute = "src") {
        foreach ( $dataObj->find($target) as $element ) {
            if ( !empty($options) ) {
                foreach ($options as $field => $value) {
                    $element->{$field} = $value;
                }
            }
    
            if ( checkurl($element) ) {
                echo $element->{$urlAttribute} = $dataObj->my_url_name . $element->{$urlAttribute};
                echo "<br>";
            }
        }
    }
    
    function checkurl($url){
        if (    strpos($url, ".com") === false
            && strpos($url, ".net") === false
            && strpos($url, ".org") === false
            && strpos($url, "http://") === false
            && strpos($url, "https://") === false
        ){
            return true;
        }
    
        return false;
    }