所以我想说我有以下代码:
$var = '-77-randomtext-moretext.extension'
除了连字符( - )和扩展名外,变量中没有任何东西是固定的。
然后让我们说我需要将'-77-'部分作为一个字符串。 '-77-'表示前两个连字符之间的任何内容,包括连字符本身。
我怎么能这样做?
答案 0 :(得分:3)
执行此操作的两种主要方法可能是explode
或preg_filter
。
分割:
$varArray = explode( '-', $var );
$string77 = '-' . $varArray[1] . '-'; // equals '-77-'
preg_filter;
$string77 = preg_filter( '/^(-.+-).*$/', '$1', $varArray ); // equals '-77-', or NULL if the string doesn't match
split
方法更快,但不太可靠。 preg_filter
将确保您始终获得所需的数据,如果不存在,则为NULL,但需要更多处理。
答案 1 :(得分:1)
您可以使用:
$parts = explode('-', $var);
$txt = '-' . $parts[1] . '-';
答案 2 :(得分:1)
使用两个strpos()
个来电之间的距离,根据这些位置获取substr()
:
$var = '-77-randomtext-moretext.extension';
$first_pos = strpos($var,'-');
$second_pos = strpos($var,'-',($first_pos+1)); //we offset so we find the second
$length = ($second_pos+1) - $first_pos; //get the length of the string between these points
echo substr($var,$first_pos,$length);
您也可以使用正则表达式(preg_match()
)或使用explode()
方法:
$pieces = explode('-',$var);
$results = '-'.$pieces[0].'-';
但这只有在您知道第一个和第二个分隔符相同时才有效。
答案 3 :(得分:1)
您可以使用正则表达式:/-(.+?)-/
答案 4 :(得分:1)
$var = '-77-randomtext-moretext.extension';
preg_match('/-(.+?)-/', $var, $matches);
echo $matches[0]; // -77-