2014-09-28 3 views
0

데이터베이스에서 가져온 테이블 형식의 데이터가 있습니다. 마찬가지로php split strings by <tr>

<tr><td>key1</td><td>pair1</td></tr> 
<tr><td>key2</td><td>pair2</td></tr> 
<tr><td>key3</td><td>pair3</td></tr> 
<tr><td>key4</td><td>pair4</td></tr> 

<tr> (s)으로 분할하고 배열의 행을 원합니다. 예.

$arr = ("<td>key1</td><td>pair1</td>", 
"<td>key2</td><td>pair2</td>", 
"<td>key3</td><td>pair3</td>", 
"<td>key4</td><td>pair4</td>"); 

explode(',', $myString);에 대해 들었지만 쉼표로 구분 된 문자열로 작동합니다.

는 : DOM 파서을 제안하지 마십시오

+0

[preg_split] 내가 정규식에 약 해요 @webeno (http://php.net/preg_split) – webeno

+0

이 .. 패턴 나도, 미안 해요, 그렇지 않으면 내가 대답으로 추가 한 것 –

+0

을 지정하세요 시도 ;) – webeno

답변

4
$out = array_filter(explode('</tr>', str_replace('<tr>','',$input))); 
+0

그게 .. .. 덕분에 –

+0

@ user3710243 좋아, 젊은이 내가 도울 수 당신 – Steve

0

시도 :

explode('<tr>', $myString); 

당신은 어떤 패턴으로 모든 문자열을 폭발 할 수 있습니다. 당신이

<tr> 

로 분할하는 경우

http://php.net/manual/en/function.explode.php

은 그러나 당신은 여전히 ​​문자열로 배열의

</tr> 

있습니다. 모든 배열 문자열에서 마지막 5자를 제거하여 제거 할 수도 있습니다.

+0

그 문제는 구분 기호를 제외하기 때문에 배열에 첫 번째 ''이 없을 것입니다 ... – webeno

+1

모든 배열 항목을 반복하여 시작 부분에 추가 할 수 있습니다. – derdida

+0

그러나 ''도 아니고 ''도없는 배열을 기대합니다. ' '을 제거하면 효과가 있지만 깨끗한 해결책이 있습니까? –

0

당신은 이것을 시도 할 수 있습니다.

<?php 

$arr ='<tr><td>key1</td><td>pair1</td></tr> 
<tr><td>key2</td><td>pair2</td></tr> 
<tr><td>key3</td><td>pair3</td></tr> 
<tr><td>key4</td><td>pair4</td></tr>'; 
str_replace('<tr>','',$arr); 
$rows = explode('</tr>',$arr); 
print_r(array_filter($rows));// arry_filter is used to remove the last null node. 
?>