Поиск тегов img с пустым параметром alt и простановка в соответствии с именем элемента

19.11.2021

Описание добавлю чуть позже. Применять только на свой страх и риск.


global $DB;
$resSql = $DB->Query("SELECT * FROM b_iblock_element WHERE IBLOCK_ID = 4;");
while($resOb = $resSql->Fetch()){
	
	preg_match_all('/]+>/i', $resOb["DETAIL_TEXT"], $img_tags);
	
	foreach($img_tags[0] as $key_tag => $img_tag){
		
		$params = [];
		
		preg_match_all('/(alt|title|src)=("[^"]*")/i',$img_tag, $img_params);
		
		if(!empty($img_params))
		{
			foreach($img_params[1] as $k => $p){
				$params[$p] = $img_params[2][$k];
			}
			
			if(empty($params["alt"]))
			{
				
				
				if(substr($img_tag, -2) == "/>")
				{
					$newTag = substr($img_tag, 0, -2) . ' alt="'.$resOb["NAME"].'" />';
				}
				elseif(substr($img_tag, -1) == ">")
				{
					$newTag = substr($img_tag, 0, -1) . ' alt="'.$resOb["NAME"].'" >';
				}
				else
				{
					continue;
				}
				
				if(!empty($img_tag) && !empty($newTag))
				{
					$updateSql = "UPDATE b_iblock_element SET DETAIL_TEXT = REPLACE(DETAIL_TEXT, '".$img_tag."', '".$newTag."') WHERE ID = ".$resOb["ID"].";";
				}
				
				//echo '
'.print_r($img_tag,true).'
'; //echo '
'.print_r($params,true).'
'; echo $updateSql; echo "\r\n"; } } } }

Возврат к списку