比较字符串在php中未获得正确的结果
我需要比较2个字符串,并且需要显示特定变量的差异,我已经在下面证明了这一点,但它不能正常工作,请任何人检查我的代码,并为我提供适当的解决方案比较字符串在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//////
$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)
}