从字符串中获取所需的子字符串

时间:2012-08-08 12:17:00

标签: php regex

如何从字符串中获取以s开头并以/s结尾的子字符串。

$text可以采用以下格式

 $text = "LowsABC/s";
 $text = "sABC/sLow";
 $text = "ABC";

我怎样才能获得ABC,有时候$text不包含s/s只有ABC,我仍然希望得到ABC

2 个答案:

答案 0 :(得分:1)

正则表达式:

s(.*)/s

或者当你想获得一个最小长度的字符串时:

s(.*?)/s

您可以使用preg_match

申请此资源
preg_match( '@s(.*)/s@', $text, $match );
var_dump( $match );

现在你必须检查一下是否发现了什么,如果没有, 那么结果必须设置为整个字符串:

if (not $match) {
   $match = $text;
}

使用示例:

$ cat 1.php 
<?
$text = "LowsABC/s";
preg_match( '@s(.*)/s@', $text, $match );
var_dump( $match );
?>

$ php 1.php
array(2) {
  [0]=>
  string(6) "sABC/s"
  [1]=>
  string(3) "ABC"
}

答案 1 :(得分:1)

可能是微不足道的,但只是使用这样的东西(正则表达并不总是值得麻烦;)):

$text = (strpos($text,'s') !== false and strpos($text,'/s') !== false) ? preg_replace('/^.*s(.+)\/s.*$/','$1',$text) : $text;