Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较字符串在php中未获得正确的结果_Php - Fatal编程技术网

比较字符串在php中未获得正确的结果

比较字符串在php中未获得正确的结果,php,Php,我需要比较2个字符串,并且需要显示特定变量的差异,我已经在下面证明了这一点,但它不能正常工作,请任何人检查我的代码,并为我提供适当的解决方案 $template = '<div[string:class_cover_ratio]><div[string:class_2]><div class="cbp-caption-defaultWrap"><img src="data:image/gif;base64,R0lGODlhAQABAPAAAP//////

我需要比较2个字符串,并且需要显示特定变量的差异,我已经在下面证明了这一点,但它不能正常工作,请任何人检查我的代码,并为我提供适当的解决方案

$template = '<div[string:class_cover_ratio]><div[string:class_2]><div class="cbp-caption-defaultWrap"><img src="data:image/gif;base64,R0lGODlhAQABAPAAAP///////yH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="" data-cbp-src="[image:thumbnail_name]" width="[string:large_width]" height="[string:large_height]"></div><div class="cbp-caption-activeWrap"><div class="cbp-l-caption-alignCenter"><div class="cbp-l-caption-body"><a href="[image:large_name]" class="cbp-lightbox cbp-l-caption-buttonLeft" data-title="[string:title]">[string:view_larger_text]</a></div></div></div></div><div class="cbp-l-grid-projects-title">[string:dish_name]</div><div class="cbp-l-grid-projects-desc">[string:dish_description]</div></div>';
$edited = '<div class="cbp-item logos cbp-ratio-even" data-cbp-coverratio="4:3"><div class="cbp-caption" style=""><div class="cbp-caption-defaultWrap"><img src="data:image/gif;base64,R0lGODlhAQABAPAAAP///////yH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="" data-cbp-src="http://cubewp.axcelmedia.com/wp-content/uploads/2019/01/Ankimo-thum.jpg" width="400" height="300"></div><div class="cbp-caption-activeWrap"><div class="cbp-l-caption-alignCenter"><div class="cbp-l-caption-body"><a href="http://cubewp.axcelmedia.com/wp-content/uploads/2019/01/Ankimo.jpg" class="cbp-lightbox cbp-l-caption-buttonLeft" data-title="Monkfish Liver, lightly garnished">View Larger</a></div></div></div></div><div class="cbp-l-grid-projects-title">Ankimo</div><div class="cbp-l-grid-projects-desc">Monkfish Liver, lightly garnished</div></div>';

function test($edited, $template) {
    $gottenValues = [];
    preg_match_all('/\[.*\]/U', $template, $names);
    $names = $names[0];
    $templateParts = preg_split('/\[.*\]/U', $template);
    foreach ($templateParts as $index => $part) {
        if ($index === 0) {
            $part = trim($part);
            $edited = trim($edited);
            $edited = substr($edited, strlen($part));
            continue;
        }
        $edited = explode($part, $edited);
        $gottenValues[trim($names[$index - 1], '[]')] = $edited[0];
        if (isset($edited[1])) {
            $edited = $edited[1];
        } else {
            $edited = "";
        }
    }
    echo '<pre>';
    print_r($gottenValues);
    die;
}

test($edited, $template); 

您可以看到它只适用于前2个值,对于其他变量,它不给我任何值

如果您只想提取图像的
数据cbp src的值
,您可以采用不同的方法,使用循环:

$edited='Yaki ToriYaki Tori';
foreach(分解('data-cbp-src=“”,$edited)为$part){
如果($end=strpos($part,“”))
$URL[]=substr($part,0,$end)
}

显然,我需要您的实际完整代码来提供实际完整的解决方案,但这将使用任何元素中的
数据cpb src
的所有值填充
URL
数组。

如果您只想提取图像的
数据cbp src
的值,您可以采用不同的方法,还有一个循环:

$edited='Yaki ToriYaki Tori';
foreach(分解('data-cbp-src=“”,$edited)为$part){
如果($end=strpos($part,“”))
$URL[]=substr($part,0,$end)
}

显然,我需要您的实际完整代码来提供实际完整的解决方案,但这将使用
数据cpb src
在任何元素中的所有值填充
URL
数组。

首先,代码不完整,我看到
$names=$names[0],只使用第一个元素,所以我想这就是问题所在。这不是问题,我只是出于不同的目的使用该值。首先,代码不完整,我看到
$names=$names[0],只使用第一个元素,所以我想这就是问题所在。这不是问题,我只是出于不同的目的使用该值。我需要通过变量名获得结果,比如[string:large_width]=1900,对于另一个values@NikulPanchal,我们需要您的实际输入和预期输出。我已更新了我的问题,现在您将获得正确的输出,我需要通过变量名获得结果,比如[string:large\u width]=1900,对于另一个变量也是如此values@NikulPanchal,我们需要您的实际输入和预期输出。我已更新了我的问题,现在您将获得正确的输出
Array
(
    [string:class_cover_ratio] =>  class="cbp-item logos cbp-ratio-even" data-cbp-coverratio="4:3"
    [string:class_2] =>  class="cbp-caption" style=""
    [image:thumbnail_name] => 
    [string:large_width] => 
    [string:large_height] => 
    [image:large_name] => 
    [string:title] => 
    [string:view_larger_text] => 
    [string:dish_name] => 
    [string:dish_description] => 
)
$edited = '<img src="" alt="" data-cbp-src="http://cubewp.axcelmedia.com/wp-content/uploads/2019/02/YakiTori.jpg" width="1900" height="1267"></div><div class="cbp-caption-activeWrap"><div class="cbp-l-caption-alignCenter"><div class="cbp-l-caption-body"><a href="http://cubewp.axcelmedia.com/wp-content/uploads/2019/02/YakiTori.jpg" class="cbp-lightbox cbp-l-caption-buttonLeft" data-title="View Larger">View Larger</a></div></div></div></div><div class="cbp-l-grid-projects-title">Yaki Tori</div><div class="cbp-l-grid-projects-desc">Yaki Tori</div></div>';
foreach(explode('data-cbp-src="', $edited) as $part) {
    if ($end = strpos($part, '"'))
        $urls[] = substr($part, 0, $end)
}