如何从字符串中获取以s
开头并以/s
结尾的子字符串。
$text
可以采用以下格式
$text = "LowsABC/s";
$text = "sABC/sLow";
$text = "ABC";
我怎样才能获得ABC
,有时候$text
不包含s
和/s
只有ABC
,我仍然希望得到ABC
。
答案 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;