簡體   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