2011-05-05 3 views
0

성은 지방을 포함하는 모든 개별 레코드 중 group_concat이며 그 중 일부는 비어 있습니다. 그래서, 인코딩 할 때이 :PREG_REPLACE 후에 PHP에서 텍스트 랩 악몽이 발생했습니다.

$provinces = ($row['provinces']); 

echo "<td>".wordwrap($provinces, 35, "<br />")."</td>"; 

이 같은 결과는 모습입니다 :

미나스 제 라이스는 ,,, 리오 그란데 할

술, 산타 카타리나, 파라나 , 상파울루

그러나 내가 preg_re하려고하면 ($은 (대체 $ 행 [ '지역'), 를 $ 패턴)

$ 지방 = preg_replace이다] 다음 널의 일부를 배치하고,이 식 일부 공간을 추가

echo "<td>".wordwrap($provinces, 35, "<br />")."</td>";` 

이 내가 무엇을 얻을! :(

미나스 제 라이스, 리오 그란데는 출력은 매우 자연스러운 찾고

술, 산타

카타리나, 파라나, 상파울루

을 BTW

. : 다음은 검색 및 바꾸기 배열입니다.

$patterns[0] = '/,,([,]+)?/';  $replaces[0] = ',&nbsp;'; 
$patterns[1] = '/^,/';    $replaces[1] = ''; 
$patterns[2] = '/,$/';    $replaces[2] = ''; 
$patterns[3] = '/\b,\b/';   $replaces[3] = ',&nbsp;'; 
$patterns[4] = '/\s,/';    $replaces[4] = ',&nbsp;'; 

업데이트 : 난

미나스 제 라이스, 리오 그란데 할 파라나에 파라나을 변경하려고

술, 산타

카타리나, 파라나, 상

파울로

+0

그래서 정확히 무엇을 요구하고 있습니까? 또한 대체 공간에서 일반 공간 대 ' '을 사용하는 이유가 있습니까? – RDL

답변

1

&nbsp;을 대체품으로 사용하지 마십시오. wordwrap()은 6자를 고려합니다. HTML 엔티티를 해석하지 않습니다. 그래서 당신의 라인이 웃기는 것입니다. 당신이 &nbsp; 당신 또한 wordwrap()

후 공백을 대체하려는 경우, 첫 번째 패턴은 다음과 같아야합니다

// match one or more commas together 
$patterns[0] = '/,+/'; 
+1

사실  은 6 자입니다. – webbiedave

+2

@webbiedave, 너는 나보다 낫다;) –

+0

와우, 네가 천재 야! –

0

정말 필요한 wordwrap()인가? 이 콘텐츠를 일부 고정 너비의 표 셀로 렌더링하는 것처럼 들리며 개별 항목을 여러 줄로 나누고 싶지는 않습니다.

만약이 추론이 정확하다면, 한 줄에 강제로 너무 길어서 레이아웃을 깨뜨릴 수없는 항목이 없다면 - explode()을 쉼표로 배열에 넣고 공백 만있는 항목을 제거하십시오. 각 어레이 항목의 일반 공백을 &nbsp;으로, implode(), (쉼표와 공백 뒤에)으로 바꿉니다. 그런 다음 렌더링 브라우저에서 필요에 따라 줄 바꿈을하십시오.