是否有PHP函数来拉出两个字符之间的字符串?

时间:2010-03-23 18:15:26

标签: php

是否有PHP函数可以在两个字符之间抓取字符串。例如,我想知道百分号和美元符号之间的含义:

  

%该处$

这是什么功能?

2 个答案:

答案 0 :(得分:7)

你可以用正则表达式来做到这一点:

$string = 'test%HERE$glop';

$m = array();
if (preg_match('/%(.*?)\$/', $string, $m)) {
  var_dump($m[1]);
}

会得到你:

string 'HERE' (length=4)


几个笔记:

  • 模式中的$具有转义功能,因为它具有特殊含义(字符串结尾)
  • 您希望匹配所有内容:.*
    • 介于%$
    • 之间
    • 但是在非gready模式下:.*?
  • 你想要抓住它 - 因此()围绕它。

答案 1 :(得分:3)

您可以使用正则表达式来获取:

preg_match('/%([^$]*)\\$/', $str, $match)

如果找到匹配项,$match[0]将包含整个匹配项,$match[1]包含%$之间的文字。

但您也可以使用strpos之类的基本字符串函数,并在此之后搜索%和第一个$

if (($start = strpos($str, '%')) !== false && ($end = strpos($str, '$', $start)) !== false) {
    $match = substr($str, $start, $end-$start);
}