2013-09-30 2 views
1

PHP에서 foreach 루프를 나열한 뉴스 기사를 MySQL에서 가져 와서 루프의 일부로 읽은 다음 쿼리를 실행 한 다음 첨부 된 이미지를 표시합니다. 이야기. 그것은 잘 작동하지만, 뉴스 기사에 대한 모든 이미지는 그 이야기에서 의미foreach 루프 중에 PHP 문자열에 쿼리 결과 삽입하기

foreach ($res AS $row) { 
    printf('<p>%s</p>' . PHP_EOL, nl2br($row['story'])); 


    $qry3 = "select * from tpf_images where news_id=".$row['news_id']; 
    $res3 = $pdo->query($qry3); 


    foreach ($res3 AS $row3) { 

     printf('<a href="/images/%s%s.jpg" rel="lightbox[%s]" title="%s. Photo Credit - %s" > 
     <img src="/images/%s%s-thumb.jpg" style="max-height: 250px; max-width: 250px" alt="%s"/></a>' . PHP_EOL, $row3['url'], $row3['alt'], $row['headline'], $str ,$row3['credit'], $row3['url'], $row3['alt'], $row3['alt']); 
    } 
} 

이 그것의 simplifid 버전입니다. 대신 내가 얻으려고하는 것은 각 단락의 시작 부분에서 이미지가 스토리 텍스트의 일부로 인쇄되는 것입니다. 이야기는 nl2br($row['story'])으로 인쇄되고, nl2br을 사용하면 단락은 <br /><br />으로 이루어집니다. 그래서 nl2br($row['story'])를 스캔 PHP를위한 방법이 그것이 <br /><br /> 삽입 텍스트를 발견하면 나는 이미지의 foreach를 위해 사용하고 있습니다 : 이미지가 텍스트의 본문에 표시됩니다

printf('<a href="/images/%s%s.jpg" rel="lightbox[%s]" title="%s. Photo Credit - %s" > 
<img src="/images/%s%s-thumb.jpg" style="max-height: 250px; max-width: 250px" alt="%s"/></a>' . PHP_EOL, $row3['url'], $row3['alt'], $row['headline'], $str ,$row3['credit'], $row3['url'], $row3['alt'], $row3['alt']); 

그 방법이 아니라 그 아래 THN. 결과에 <br /><br />보다 많은 이미지가있는 경우 나머지 이미지는 이전과 같은 이야기 이후에 인쇄됩니다. , nl2br($row['story']) 시도하고 질문을 명확하게하기 위해 : 나는 완전히 난처한 상황에 빠진 것처럼이 어떤 도움을

덕분에

EDIT (또한, 제목이되도록해야한다 필요한 경우 더 나은 소송을 편집 할 수 있는지 확신 할 수 없었다) <br /><br />을 (를) 검색하십시오.

<a href="/images/%s%s.jpg" rel="lightbox[%s]" title="%s. Photo Credit - %s" > 
     <img src="/images/%s%s-thumb.jpg" style="max-height: 250px; max-width: 250px" alt="%s"/></a>' . PHP_EOL, $row3['url'], $row3['alt'], $row['headline'], $str ,$row3['credit'], $row3['url'], $row3['alt'], $row3['alt'] 
+0

그래서 당신이 원하는 것을 다음를 찾아서 대체하는 루프를 수행 모든 이미지를 수집하는 것입니다 그것의 스타일을 아주 쉽게 때문에

난 당신이 <li>의를 사용하는 것이 좋습니다 것입니다

태그와 함께

? – nycynik

+0

네, 기본적으로. – user2574794

+0

업데이트 된 답변을 확인하십시오. – OneOfOne

답변

2

왜 printf와 라인에 직접
를 추가하지?

printf('<a href="/images/%s%s.jpg" rel="lightbox[%s]" title="%s. Photo Credit - %s" > 
<img src="/images/%s%s-thumb.jpg" style="max-height: 250px; max-width: 250px" alt="%s"/></a><br>' . PHP_EOL, $row3['url'], $row3['alt'], $row['headline'], $str ,$row3['credit'], $row3['url'], $row3['alt'], $row3['alt']); 

또는 더 나은, CSS를 사용은 예를 들어, 스타일을 :

echo '<div class="images">'; 
foreach ($res3 AS $row3) { 

    printf('<a href="/images/%s%s.jpg" rel="lightbox[%s]" title="%s. Photo Credit - %s" > 
    <img src="/images/%s%s-thumb.jpg" style="max-height: 250px; max-width: 250px" alt="%s"/></a>' . PHP_EOL, $row3['url'], $row3['alt'], $row['headline'], $str ,$row3['credit'], $row3['url'], $row3['alt'], $row3['alt']); 

} 
echo '</div>'; 

CSS :

div.images a { display: block; } 

을 내가 완전히 질문을 오해하지 않는 한. 편집 :

새 편집 톱 대신의 sprintf를 사용해야합니다 :

foreach ($res AS $row) { 
    $story = '<p>' . preg_replace("/\n|\n\r|\n\r/", '<br>', $row['story']) . '</p>' . PHP_EOL; 


    $qry3 = "select * from tpf_images where news_id=".$row['news_id']; 
    $res3 = $pdo->query($qry3); 

    $images = ''; 
    foreach ($res3 AS $row3) { 
     $images .= sprintf('<a href="/images/%s%s.jpg" rel="lightbox[%s]" title="%s. Photo Credit - %s" > 
     <img src="/images/%s%s-thumb.jpg" style="max-height: 250px; max-width: 250px" alt="%s"/></a>' . PHP_EOL, $row3['url'], $row3['alt'], $row['headline'], $str ,$row3['credit'], $row3['url'], $row3['alt'], $row3['alt']); 
    } 
    $story = preg_replace('/<br><br>/', '<br>' . $images . '</br>', $story); 
} 
+0

이것은 올바른 방향으로 가고있는 것 같고 질문에 명확하지 않은 것에 대해 유감스럽게 생각합니다. 나는 당신의 코드를 복사/붙여 넣기하고 에러를 낸다. 경고 : preg_replace() [function.preg-replace] : 구분 기호는 라인 86의 /home3/danville/public_html/test5/index.php에 영숫자 또는 백 슬래쉬가 있어서는 안된다. 경고 : preg_replace() [function.preg-replace] : /home3/danville/public_html/test5/index.php 줄의 알 수없는 수식어 '<' – user2574794

+0

오, 내 커피가 없었어요 .' preg_replace ("/ \ n | \ n \ r | \ n \ r /", '
', $ row [ 'story']) ' – OneOfOne

+0

우리가 거의 거기에 있다고 생각합니다. 다른 줄'$ story = preg_replace ('

', '
'. $ images. '
', $ story)에 대해서도 유사한 오류가 발생합니다. 경고 : preg_replace() [function.preg-replace] : /home3/danville/public_html/test5/index.php 97 행의 알 수없는 수정 자 '<' – user2574794

0

user2574794 : 찾을 경우 이미지가 I 인 이미지를 표시하기 위해 사용하는 코드 인 상태 <br /><image><br />로 대체됩니다. 요청하시는 것이 정확히 "명확하지 않습니다".

왜, 간단한 str_replace()를 사용하지 않으시겠습니까? 같은 뭔가 :

str_replace('<br /><br />', '<br /><br />blabla', nl2br($row['story'])); 
0

<br/>의이

제거 제거하기 위해 않는 str_replace() 함수를 사용하여 휴식 행 :

str_replace(array('<br>','<br/>','',strtolower($row['story']))) 

내 이야기 ​​이야기 <span>을 입력하고 <span><img>을 텍스트 정렬합니다.(수직 및 수평 텍스트를 정렬)