2016-07-27 93 views
0

我有textarea的,字符串:查找和spilit號碼

__A 59.202x5p. 
    __B 611.08 500p 
    __C 991,70p.66.113.552.77.88.10p 199x200p 
    __C2 33 44x100p 55 161x150p 25 33 85x60p 727 77 373 22x220p 
    __C3 44 16 59x10p 343 x15p 172 200p 

我想這樣的輸出:

__A 59.20 02x5p. 
    __B 61 11.08 500p 
    __C 99 91,70p.66.11 13.55 52.77.88.10p 19 99x200p 
    __C2 33 22 44x100p 55 16 61 x150p 25 33 85x60p 72 27 77 37 73 22x220p 
    __C3 44 16 59x10p 34 43 x15p 17 72 200p 

如果數字是數百之前「×P + 「或」?p「(?是隨機數字和斜線),它會彈性和線條會這樣:

__A 59.202x5p. >>> __A 59.20 02x5p. 
    __B 611.08 500p >>> __B 61 11.08 500p 
    __C 991,70p.66.113.552.77.88.10p 199x200p >>> __C 99 91,70p.66.11 13.55 52.77.88.10p 19 99x200p 
    ... 

我使用preg_match + preg_replace + substr,但我無法找到數以百計的數字之前「x? P」或‘p’......

,我不知道如何spilit像數?(是隨機數和無法spilit?):

__A 59."202"x5p. (202 to 20 02) >>> __A 59.20 02x5p. 
    __B 611.08 500p (611 to 61 11) >>> __B 61 11.08 500p 

我的英語不是很好,希望誰看過我問題可以理解和幫助我解決這個問題。

感謝非常非常多。

回答

0

檢查下面的代碼..

<?php 
echo "<u>CURRENT STRING</u><br/>"; 
echo $value ="__A 59.202x5p. 
     __B 611.08 500p 
     __C 991,70p.66.113.552.77.88.10p 199x200p 
     __C2 33 44x100p 55 161x150p 25 33 85x60p 727 77 373 22x220p 
     __C3 44 16 59x10p 343 x15p 172 200p";echo '<br>'; 

for($i=0;$i<=(strlen($value)-4); $i++) { 
    $myvar = $value[$i].$value[$i+1].$value[$i+2];  
    if (preg_match("/\d{3}/u", $myvar) > 0 && $myvar>100 && strpos($myvar.$value[$i+3], 'p') == 0) 
    $value = substr($value,0,$i+2).' '.$value[$i+1].substr($value,$i+2,strlen($value));  
} 
echo "<u>DESIRED STRING</u><br/>"; 
echo $value; 
?> 
+0

它工作得很好,非常感謝...但我看到,如果號碼像:010,020 ... 0是開始...號碼沒有spilit @ ___ @ 希望你修復它。 – tcla

+0

@tcla如果你需要010到01 10,只要刪除$ myvar> 100條件.. –