2010-03-18 3 views
0

PHP를 사용하여 데이터베이스에 저장된 내용을 반향합니다. 콘텐츠는 모든 유형의 데이터를 담고있는 DIV입니다.php로 "echoed"div 속성 변경하기

문제는 내가 ID를 모른다는 것이며 두 번 이상 표시하려고하면 이러한 DIV에 문제가있는 것입니다.

그래서 아이디어는 DIV id를 표시 할 때마다 수정하는 것입니다. 다음과 같음 :

<?php modify_div_id($data,"id-456"); ?> 

어떻게하면됩니까?

+0

div 태그가 문자 그대로 데이터베이스에 저장되어 있다고합시다. – Tesserex

+0

예 ... 콘텐츠가있는 div를 찾을 수있는 필드가 있습니다. – Zakaria

답변

1

이것은보기 싫지만 작동한다고 생각합니다.

function modify_div_id($data, $new_id) { 
    return preg_replace('/(<div[^>]+?id=)("|\')(.*?)("|\')/i', '$1$2' . $new_id . '$4', $data); 
} 

가장 좋은 방법은 XML 구문 분석기를 사용하여 속성을 변경하는 것입니다.

편집 :이 함수는 div에 이미 id 특성이 있다고 가정합니다.

편집 # 2
작동하는 것 같습니다.

[email protected]:~$ cat | php -r "eval(file_get_contents('php://stdin'));" 
function modify_div_id($data, $new_id) { 
    return preg_replace('/(<div[^>]+?id=)("|\')(.*?)("|\')/i', '$1$2' . $new_id . '$4', $data); 
} 
echo modify_div_id('<div pajas="pajas" id="fisk">Innehåll</div>', 'nytt_id'); 

# Result: <div pajas="pajas" id="nytt_id">Innehåll</div> 
0

귀하의 질문은 모호합니다.

우선 해제, HTML 요소의 id 속성 때문에 고유 id이 적절한 반향 고유해야합니다 (당신은 또한 class을 사용할 수 있습니다). 당신이 당신의 데이터베이스를 조회하고 다시받은 경우

, 다음과 같이 id 및 내용을 포함하는 배열, 당신은 기능을 사용할 수 있습니다, 말 :

function modify_div_id($data, $id) { 
    echo "<div id='$id'>$data</div>"; 
} 

그냥 예를.