소프트웨어 php array 내부에서 if처리 가능한가요?
2017.08.12 05:52
if로는 안 되는걸로 알고 있는데 분기시킬 필요가 있어서 질문 남겨봅니다
array(
'tag' => 'jwp',
'type' => 'unparsed_commas_content',
'content' => ($context['browser']['is_ie'] && !$context['browser']['is_mac_ie'] ? '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="$2" height="$3"><param name="movie" value="' . $settings['default_theme_url'] . '/player.swf" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="wmode" value="transparent" /><param name="flashvars" value="file=$1&image=$4" /><embed src="' . $settings['default_theme_url'] . '/player.swf" width="$2" height="$3" bgcolor="#000000" allowscriptaccess="always" allowfullscreen="true" flashvars="file=$1&image=$4" /><noembed><a href="$1" target="_blank" class="new_win">$1</a></noembed></object>' : '<div class="flowplayer" style="width:$2px;height:$3px;"> <video poster="$4"> <source type="video/mp4" src="$1"></video></div>'),
'validate' => create_function('&$tag, &$data, $disabled', '
if (isset($disabled[\'url\']))
$tag[\'content\'] = \'$1\';
elseif (strpos($data[0], \'https://\') !== 0 && strpos($data[0], \'https://\') !== 0)
$data[0] = \'https://\' . $data[0];
'),
'disabled_content' => '<a href="$1" target="_blank" class="new_win">$1</a>',
),
문제의 코드입니다
수정하고하자는 부분은 content의 분기된 flowplayer부분입니다
$4가 지정된 경우는 poster="$4"를 출력하고, 아닌 경우는 출력하지 않는게 목표입니다
댓글 [6]
-
taskmgr.exe 2017.08.12 18:38 -
DarknessAngel 2017.08.12 20:00
게시판의 BBC코드 처리하는 부분이라 별 수 없습니다
입력할때 [jwp 가로,세로,섬네임]영상주소[/jwp]이런식으로 입력해주면 이걸 파싱해서 html코드로 자동 변환해야해서 필연적으로 저런식으로 통째로 쑤셔박는 수 밖에 없습니다
sql을 뒤져서 어찌 안 되나 쳐다봤더니 body 안에 통째로 게시물 내용을 하나씩 쑤셔박아놔서 가망이 없습니다 (랄까 어떻게 파싱하는지도 이해불능)
추신 : 그런데 $4=$4 하면 항상 true가 되는데 비교하는 의미가 있는지?
추신2 : 제가 구현한것말고도 원래 FlowPlayer 추가하는 확장 기능 있는데, 이부분 골치아팠는지, poster부분은 누락시켜져있습니다 (다만 기존에 해당 기능이 존재하는걸 그대로 마이그레이션시키는게 목표라서 구현하고자 하는겁니다)
-
taskmgr.exe 2017.08.12 20:34 추신 : 그런데 $4=$4 하면 항상 true가 되는데 비교하는 의미가 있는지?
→ 변수 자체가 아니라 값 유무를 체크해서 해당 변수에 값이 들어있으면 덮어쓰는 겁니다.
$4에 "https://server.com/poster.jpg"가 들어있으면 " poster="https://server.com/poster.jpg""로 바꿉니다.
그리고 해당 배열을 <object> 태그와 <video> 태그로 분기시키는데, 그럴필요 없이
<video>
<source src="https://server.com/a.mp4">
<object ...></object>
</video>
위처럼 하면 video 태그 미지원 브라우저 접속시 알아서 폴백됩니다.
추가로 poster에 들어갈 $4 값이 비어있으면 브라우저단에서 무시될텐데요. 굳이 힘들게 poster 속성 자체를 없애야 하는지?
-
DarknessAngel 2017.08.12 21:58
잘못 봤군요 (==인줄 알았습니다)
전체 파일 첨부해놨는데, $숫자가 글로벌로 정의된게 아니라서 밖에서 호출할 수 없습니다 (심지어는 array의 값 입력 초기부분인 => 직후에서 !=같은거 걸어도 에러낼정도) (이 문제때문에 조건 분기가 안 되서 글 올린건데, 파일 전체 훌어봐도 대체 $숫자값이 구체적으로 뭘 호출하고, 어떻게 할당되는지 이해불능입니다)
위의 분기시키는건 원본 소스에 있던건데 손 안 되고 내버려둔겁니다 (차후 수정해서 html5 영상 재생 불가 브라우저경우 플레쉬 기반 플레이어 찾아가게 만들려고 남겨둔겁니다) (삭제해도 상관은 없습니다)
$4가 미입력이라도 괜찮으면 처음부터 삽질 안 해도 되서 편하겠지만, 만일 $4가 미입력이면 나중에 html에서 그대로 poster="$4"로 뜨고, 플레이어자체가 속성 일단 정의해버리면 무시 못하는 구조라서 심지어는 poster=""로 되어있어도 예외없이 403뜹니다
사용중인 플레이어는 소스에도 나오는 FlowPlayer 7.0.4(최신) html5버전입니다
기존의 플레이어 전부 flash기반의 구버전 jwplayer 5.8기반이었는데, 이번 기회에 서버에서 플러그인 기반인 기능등의 잠재적 보안 불안 요소 일소하기 위해서 다 뜯어고치는 과정에서 교체된겁니다 (보안 문제도 있고, 무겁고, 모바일 미지원이고, 20년에 adobe가 flash지원 중단 선언함에 따라 주요 브라우저들이 flash제거를 위한 단계를 밣고 있는것도 원인입니다)
추신1 : $4=$4시도하니 sytex error, unexpected '4' (T_Number), expecting variable (T_VARIABLE) or '{' or '$' in Subs.php line 1193이라 뜹니다 (아무래도 $4를 변수로 못 알아먹는듯)
추신2 : ?:분기라면 배열 내부에서도 사용 가능 (본문 참조)합니다 (꼭 밖에서 분기할 필요는 없음)
추신3 : ' Poster=$4'로 처리하면 절대 안 됩니다 (반드시 'Poster=$4'야 정상적으로 처리됩니다 (공백은 앞의 Video부분에 붙여야 평문으로 처리됩니다)
-
taskmgr.exe 2017.08.13 00:59 $1, $2, ... 변수도 입력값에 따라 자동 증식되는것 같네요.
같은 $n 이라도 배열마다 값이 다른것같기도 하고..
태그분기 어쩌고 폴백얘기는 이미 배열 내의 content를 $context['browser'] 변수로 분기처리하는데 그 안에서 또 $4 분기처리는 안되지 싶어서 언급했습니다.
(if else도 아니고 ?: 분기 내에서 하위 분기처리가 가능하던가요? 저도 좀 한수 배워보고싶음)
그리고 변수에 값이 없으면 아무것도 찍히지 않아야 정상 아닌가요? $4 그대로 찍히는건 좀 이상한데..
content 부분을 아래처럼 하면 어떨까 싶은데요. 물론 php 돌릴 환경이 안돼서 되는지 안되는지 테스트는 없습니다.
'content' => '<div class="flowplayer" style="width:$2px;height:$3px;"><video '.($4 ? 'poster="$4"' : '').'><source type="video/mp4" src="$1"><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="$2" height="$3"><param name="movie" value="' . $settings['default_theme_url'] . '/player.swf" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="wmode" value="transparent" /><param name="flashvars" value="file=$1&image=$4" /><embed src="' . $settings['default_theme_url'] . '/player.swf" width="$2" height="$3" bgcolor="#000000" allowscriptaccess="always" allowfullscreen="true" flashvars="file=$1&image=$4" /><noembed><a href="$1" target="_blank" class="new_win">$1</a></noembed></object></video></div>',
-
DarknessAngel 2017.08.12 19:58
$4입력 여하로 처리하기 힘들다면 str계열로 https/https/ftp등으로 시작하는지를 판단해서 처리해도 될듯합니다 (웬지 모르게 제가 해보니 문법 에러냈지만)
$4라는걸 비교대상으로 직접 지정 불가능해보입니다 ($4 == ''이나 EMPTY($4)등이 다 안 먹힘)
구현자체는 간단하게 조건문 ? 'poster=$4' : ''으로 충분한데, 대체 뭘 조건으로 지정해야할지 불명확한 상태입니다
번호 | 제목 | 글쓴이 | 조회 | 등록일 |
---|---|---|---|---|
[공지] | 질문과 답변 게시판 이용간 유의사항 | gooddew | - | - |
69919 | 하드웨어| 불행중 다행인지..불행의 시작인지.. [11] | ILY | 743 | 08-13 |
69918 | 윈 도 우| 자료 활용법 문의드립니다. [4] | tuzki | 366 | 08-13 |
69917 | 하드웨어| 파워서플라이 수명이 다 된 현상 ? (사진 첨부) [8] | 뉴썬 | 1574 | 08-13 |
69916 | 소프트웨어| 파폭 구글 접속오류 [4] | 프리네 | 371 | 08-13 |
69915 | 윈 도 우| 지인한테 컴을받았는데 윈도우7 일때는 정품인증이 잘됐는... [3] | 알파궁상 | 1166 | 08-12 |
69914 | 윈 도 우| suk님 통합버전 관련 질문드립니다. [6] | 슝슝이 | 626 | 08-12 |
69913 | 윈 도 우| 윈10 파티션 변경 방법좀 부탁드립니다. [10] | UCLA | 1301 | 08-12 |
69912 | 윈 도 우| staticwin 인증 해제 방법 [3] | 6151012 | 2501 | 08-12 |
69911 | 윈 도 우| 얼마 전 윈도우 업뎃 후 공유 컴퓨터 목록이 네트워크에 안... [8] | 불감자 | 932 | 08-12 |
69910 | 윈 도 우| 스카이레이크,카비레이크에 윈도7 설치 시..? [7] | pinnk | 829 | 08-12 |
69909 | 하드웨어| 하드디스크 성능좀 봐주세요.&^^ [9] | 뚱땡이 | 425 | 08-12 |
69908 | 기 타| 피카사 사진 삭제하기 [1] | 무명거사 | 513 | 08-12 |
» | 소프트웨어| php array 내부에서 if처리 가능한가요? [6] | DarknessAn | 211 | 08-12 |
69906 | 윈 도 우| 염치 없지만 두가지만 더 질문합니다 WINEPE8.1 [2] | 지룡자 | 360 | 08-12 |
69905 | 윈 도 우| 윈7에서 윈10으로 os 업글 시 보조 HDD가 동적디스크로.. [2] | 늦둥이it | 731 | 08-12 |
69904 | 기 타| 공유기 셋팅 메뉴 중에 궁금한것이 있어요 [11] | 뷰리풀투데 | 772 | 08-11 |
69903 | 윈 도 우| WIN8.1 PE 질문입니다 [7] | 지룡자 | 497 | 08-11 |
69902 | 윈 도 우| mbr uefi 호환 설치 usb 만드는 방법 [4] | melusina | 885 | 08-11 |
69901 | 윈 도 우| PE81 급하게 만들어 봤어요, 질문 있습니다. [3] | 지룡자 | 383 | 08-11 |
69900 | 윈 도 우| 지인이 이런컴퓨터를 15만원에사라고하는데 사도됄까요? [24] | 알파궁상 | 1861 | 08-11 |
어휴, 뭔놈의 배열에 html 태그세트를 통째로;;
저 배열 선언 전에 분기처리하면 안되던가요?
$4 = $4 ? ' poster="$4"' : '';