繁体   English   中英

将字符串与HTML匹配时,PHP Preg Match All失败。

[英]PHP Preg Match All fails when matching string with HTML.

我在下面尝试匹配类名。

<section className="content_main_container">
<article className="comment_user_propic">

但是仅匹配“文章” className。

我已经尝试了以下方法。

function comments(){
    $str = <<<EOT

    '<section className="content_main_container">
    <article className="comment_user_propic">'

EOT;

return $str;
}

class obfusicate {  

    function change($str, $prefix){

        preg_match_all('#'.$prefix.'="(.*?)"#',$str,$parts);

        $array_len          = count($parts[1]);
        $class_count        = 0;
        $c_array            = [];

        foreach($parts[1] as $part){
            $rand_name      = self::rand_g();
            $c_array[$part] = $rand_name;   

            ++$class_count;     
            $str_1      = str_replace($part, $rand_name, $str);
        }

        return ['array'=>$c_array, 'string'=>$str_1];
    }
}

$obs        = new obfusicate;
$result     = $obs->change(comments(), 'className');

echo var_dump($result['string']);

您的错误在这里:

    foreach($parts[1] as $part){
        $rand_name      = self::rand_g();
        $c_array[$part] = $rand_name;   

        ++$class_count;     
        $str_1      = str_replace($part, $rand_name, $str); //each time you start over replacing from $str and you lose your last $str_1 value
    }

    return ['array'=>$c_array, 'string'=>$str_1]; //Assigned after the loop so only the last $str_1 value is stored

EDiT:在最后一行看我的评论

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM