2016-06-14 3 views
-1

정규식 또는 preg_match_all을 사용하는 방법에 익숙하지 않습니다. 모든 요소의 모든 스타일 속성을 가져온 다음 글꼴 크기 값을 가져 와서 새 값으로 바꾸고 싶습니다.regex 또는 preg_match_all을 사용하여 스타일 태그를 얻는 방법

예 :

<span style="font-size: 60px;">Coming Soon</span> 
<span style="font-size: 60px;">Coming Soon</span> 
<span style="font-size: 160px;">Coming Soon</span> 
<span style="font-size: 70px;">Coming Soon</span> 
<span style="font-size: 260px;">Coming Soon</span> 

각 크기는 새로운 값으로 대체 될 모든 요소의 모든 폰트 사이즈를 취득.

$getnewfont = 7*$getfont/16; 
$getnewfont = round($getnewfont); 
$getnewfont = 'font-size:' . $getnewfont . 'px;line-height:' . $getnewfont . 'px;'; 
$getnewfont = preg_replace('/"font-size:(.*)\"/i', $getnewfont, $content); 

이것은 내가 지금 한 것입니다. 계산은 아직 완료되지 않았습니다. 하지만 아이디어는 현재 요소 너비에 해당하는 글꼴 크기를 얻는 것입니다.

+0

새로운 값은 무엇인가? – RomanPerekhrest

+0

지금까지 시도한 것을 보여줄 수 있습니까? –

+0

정규식을 사용하기 전에 두 번 생각하십시오. 직선적으로 보이지만 극단적으로 융통성이 없습니다. 즉, html 구조의 일부 세부 사항이 변경되면 구현이 실패합니다. 대부분의 경우 DOM 파서를 사용하는 것이 더 강력합니다. PHP의'simpleDom' 또는'DomDocument'를보십시오. – arkascha

답변

0
s/font-size: [0-9]*px;/font-size: 50px;/g 

그리고 원하는 값으로 50을 변경하십시오.

+0

내 패턴을 사용하려고했지만 오류가 발생했습니다. 경고 : preg_match_all() : 구분 기호는 영숫자 또는 백 슬래시가 아니어야합니다. –

0

이런 경우에는 preg_match_all 기능을 사용할 필요가 없습니다.
preg_replace_callback 기능은 모든 필요 교체 작업을 수행합니다

$html_str = '<span style="font-size: 60px;">Coming Soon</span> 
<span style="font-size: 60px;">Coming Soon</span> 
<span style="font-size: 160px;">Coming Soon</span> 
<span style="font-size: 70px;">Coming Soon</span> 
<span style="font-size: 260px;">Coming Soon</span>'; 

$replaced = preg_replace_callback("/\b(font-size:) (\d{1,3})px;/", function($matches){ 
    $new_size = round(7 * $matches[2]/16); 
    return $matches[1]." ". $new_size. 'px;line-height: '. $new_size. 'px;'; 
}, $html_str); 

print_r($replaced); 

출력 :

<span style="font-size: 26px;line-height: 26px;">Coming Soon</span> 
<span style="font-size: 26px;line-height: 26px;">Coming Soon</span> 
<span style="font-size: 70px;line-height: 70px;">Coming Soon</span> 
<span style="font-size: 31px;line-height: 31px;">Coming Soon</span> 
<span style="font-size: 114px;line-height: 114px;">Coming Soon</span> 

http://php.net/manual/en/function.preg-replace-callback.php

+0

와우! 덕분에 ! 나는 그것을 시험해 보았다. –