мне нужно сравнить 2 шаблона и нужно получить строку из определенной переменной в HTML с PHP - PullRequest
0 голосов
/ 26 марта 2019

Здесь, в базе данных, я сохранил шаблон, как показано ниже, в том смысле, что я определил его переменную как [string: cover_ratio] и "[image: large_image] и т. Д.

<div class="cbp-item logos cbp-ratio-even" data-cbp-coverratio="[string:cover_ratio]"><div class="cbp-caption" style=""><div class="cbp-caption-defaultWrap"><img src="data:image/gif;base64,R0lGODlhAQABAPAAAP///////yH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="" width="1900" height="1267" data-cbp-src="[image:large_image]"></div><div class="cbp-caption-activeWrap"><div class="cbp-l-caption-alignCenter"><div class="cbp-l-caption-body"><a href="[image:thumbnail_image]" 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">[string:dish_name]</div><div class="cbp-l-grid-projects-desc">[string:dish_description]</div></div>

И у меня есть тот же шаблон с его значением, как показано ниже HTML

<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="" width="1900" height="1267" data-cbp-src="https://kyousushi.ca/gallery/wp-content/uploads/2019/02/Salmon-Sashimi.jpg"></div><div class="cbp-caption-activeWrap"><div class="cbp-l-caption-alignCenter"><div class="cbp-l-caption-body"><a href="https://kyousushi.ca/gallery/wp-content/uploads/2019/02/Salmon-Sashimi.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">Salmon Sashimi</div><div class="cbp-l-grid-projects-desc">Salmon Sashimi</div></div>

Вы можете видеть в этом шаблоне переменную [string: cover_ratio] со значением 4: 3, мне нужно получить все это определенное значение, может ли кто-нибудь в этом шаблоне помочь мне в этом?

1 Ответ

1 голос
/ 26 марта 2019

Обновленный ответ:

Я проверил это, и оно работает - в основном удалите статические части строки и сохраните остальные:

//template string
$template = '<div class="cbp-item logos cbp-ratio-even" data-cbp-coverratio="[string:cover_ratio]"><div class="cbp-caption" style=""><div class="cbp-caption-defaultWrap"><img src="data:image/gif;base64,R0lGODlhAQABAPAAAP///////yH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="" width="1900" height="1267" data-cbp-src="[image:large_image]"></div><div class="cbp-caption-activeWrap"><div class="cbp-l-caption-alignCenter"><div class="cbp-l-caption-body"><a href="[image:thumbnail_image]" 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">[string:dish_name]</div><div class="cbp-l-grid-projects-desc">[string:dish_description]</div></div>';

//string with values inserted
$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="" width="1900" height="1267" data-cbp-src="https://kyousushi.ca/gallery/wp-content/uploads/2019/02/Salmon-Sashimi.jpg"></div><div class="cbp-caption-activeWrap"><div class="cbp-l-caption-alignCenter"><div class="cbp-l-caption-body"><a href="https://kyousushi.ca/gallery/wp-content/uploads/2019/02/Salmon-Sashimi.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">Salmon Sashimi</div><div class="cbp-l-grid-projects-desc">Salmon Sashimi</div></div>';

//this is where we will store the values
$gottenValues = [];

//get the variable names
preg_match_all('/\[.*\]/U', $template, $names);
$names = $names[0];

//get the static parts of the string
$templateParts = preg_split('/\[.*\]/U', $template);

//replace the static parts of the edited string, and the remaining parts are the values
foreach($templateParts as $index=>$part){

    if($index===0){
        //for the first part, just replace the static part of the string
        $edited = substr($edited, strlen($part));
        continue;
    }

    //split the editied string by the next static part, and use the first art as the value
    $edited = explode($part, $edited);

    //save the value based on the variable name
    $gottenValues[trim($names[$index - 1], '[]')] = $edited[0];

    //update the editied string
    $edited = $edited[1];
}

//print the resulting object
echo '<pre>';
print_r($gottenValues);

этот код вернет результат:

Array
(
    [string:cover_ratio] => 4:3
    [image:large_image] => https://kyousushi.ca/gallery/wp-content/uploads/2019/02/Salmon-Sashimi.jpg
    [image:thumbnail_image] => https://kyousushi.ca/gallery/wp-content/uploads/2019/02/Salmon-Sashimi.jpg
    [string:dish_name] => Salmon Sashimi
    [string:dish_description] => Salmon Sashimi
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...