2017-11-15 18 views
-2

내가 다음 줄정규 표현식

|  1 | 2567 | Алма-атинська(І) вул.      | 2  | 2  |5678  |Типовий лічил-|Санвузол   | 15.12.2016 | 10.11.2016 | 10.11.2020 | 23.10.2017 |   | 43.00 |bot  | 

그 잘 작동에 대한 다음과 같은 정규 표현식

[^|]+(|[^|]+){15} 

을했습니다, 나는 사이의 모든 텍스트 있어요 '|'를하지만, 일치하는 문자열을 전달하려면 어떻게해야합니까? 예를 들어 모든 백 스페이스를 지우거나 일부 하위 문자열을 삭제합니다.

+0

그래서 제거 할 전체 문자열 사이에 여분의 공백이 있습니까? –

+0

보고 싶은 출력을 제공하십시오 – pr1nc3

+1

정규 표현식이'[^ |] +'이고 질문에 대한 답변이 명확하지 않습니다. –

답변

0

당신 등 추가 공간을 제거 그리고 마지막으로 배열에서 빈 값을 제거하는 array_filter를 사용하는 trim() 다음 explode()을 할 수 있습니다

$str = '|  1 | 2567 | Алма-атинська(І) вул.      | 2  | 2  |5678  |Типовий лічил-|Санвузол   | 15.12.2016 | 10.11.2016 | 10.11.2020 | 23.10.2017 |   | 43.00 |bot  |'; 
$arr = array_filter(array_map(function($value){return trim($value);},explode('|', $str))); 
print_r($arr); 

출력 :

Array ([1] => 1 [2] => 2567 [3] => Алма-атинська(І) вул. [4] => 2 [5] => 2 [6] => 5678 [7] => Типовий лічил- [8] => Санвузол [9] => 15.12.2016 [10] => 10.11.2016 [11] => 10.11.2020 [12] => 23.10.2017 [14] => 43.00 [15] => bot) 
+0

하지만 문자열에 여기가 포함되어 있지 않으면 패턴, 어떻게 그것을 탈출 할 수 있습니까? 예를 들어,이 줄 :'$ str = "+ ------- + -------------- + -------- ----------------------------------- + ------- + ------ - + -------------- + -------------- + ----------------- - + ------------------------------------------------ ---------------- + ---------- + ----------------- + "; ' – NisuSan

+0

당신이 물어 본 질문은 공백에 대해 이야기합니다. 이것은 완전히 다른 문자열이며 공백이 전혀없고 사실상 +와 - 기호가 있습니다. –