PHP正则表达式删除不需要的数据

时间:2009-10-16 15:16:39

标签: php regex string

我希望能够从一串数据中删除内容。

这是来自google maps api的示例字符串。

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

我希望括号()之间的所有内容。那么我可以使用preg_split吗?

从任意一方删除所有内容

5 个答案:

答案 0 :(得分:4)

这样更好:

$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);

但是,如果你使用正则表达式,我已经死定了:

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

答案 1 :(得分:2)

if (preg_match('/\(([^)]*)\)/', $text, $regs)) {
    $result = $regs[2];
    // $result now contains everything inside the backets
}

答案 2 :(得分:0)

这是基本的正则表达式问题。使用以下内容:preg_match('/\(.*?\)/', $s, $m);其中$s是您的字符串。匹配将在$m数组中。

答案 3 :(得分:0)

您可以使用preg_replace

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

那应该在parens之间提取文本。

答案 4 :(得分:0)

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";