PHP Regex istenmeyen verileri kaldırmak

4 Cevap php

Ben veri dize içeriği kaldırmak mümkün olmak istiyorum.

Bu google maps API bir örnek dizedir.

Distance: 70.5&#160;mi (about 1 hour 12 mins)<br/>Map data &#169;2009 Google 

Ben parantez () arasındaki her şeyi istiyorum. Yani preg_split ile iki tarafında her şeyi kaldırabilirim?

4 Cevap

Bu daha iyidir:

$str = "Distance: 70.5&#160;mi (about 1 hour 12 mins)<br/>Map data &#169;2009 Google";

$start = strpos($str, '(') + 1;
$end = strpos($str, ')');
$content = substr($str, $start, $end - $start);

Ama eğer bir regex kullanarak ölü-set:

preg_match($str, '/\((.*?)\)/', $matches);
$content = $matches[1];

Bu temel düzenli ifade sorunu var. preg_match('/\(.*?\)/', $s, $m); burada $s sizin dize: Bu gibi bir şey kullanabilirsiniz. Karşılaşmalar $m dizi olacak.

Sen kullanabilirsiniz preg_replace:

$timeDistance = preg_replace(array('/(.*)([(])(.*)([)])/'), array('\3',''), $googleString );

Yani Pars arasındaki metni ayıklamak gerekir.

explode()

// Step 1
$string  = "Distance: 70.5&#160;mi (about 1 hour 12 mins)<br/>Map data &#169;2009 Google";
$pieces = explode("(", $string);
echo $pieces[0]; // should be: Distance: 70.5&#160;mi 
echo $pieces[1]; // should be: about 1 hour 12 mins)<br/>Map data &#169;2009 Google";

// Step 2
$keeper = explode(")", $pieces[1]);
echo $keeper[0]; // should be: about 1 hour 12 mins 
echo $keeper[1]; // <br/>Map data &#169;2009 Google";