Как получить подстроку строки, используя начальный и конечный символ в PHP?

Я ищу найти среднюю часть строки, используя начальный тег и конечный тег в PHP.

$str = 'Abc/hello@gmail.com/1267890(A-29)';
$agcodedup = substr($str, '(', -1);
$agcode = substr($agcodedup, 1);

окончательная ожидаемая стоимость agcode:

$agcode = 'A-29';

0

Решение

Вы можете использовать preg_match

    $str = 'Abc/hello@gmail.com/1267890(A-29)';
if(  preg_match('/\(([^)]+)\)/', $string, $match ) ) echo $match[1]."\n\n";

Выходы

   A-29

Вы можете проверить это здесь

http://sandbox.onlinephpfunctions.com/code/5b6aa0bf9725b62b87b94edbccc2df1d73450ee4

В основном регулярное выражение говорит:

  • начать матч, матчи \( Открытый паренал буквальный
  • группа захвата ( .. )
  • соответствовать всем, кроме [^)]+ Закрыть Парен )
  • конец матча, матчи \) Закрыть Парень буквальный

Ох, и если вы действительно настроены на substr Ну вот:

$str = 'Abc/hello@gmail.com/1267890(A-29)';

//this is the location/index of the ( OPEN_PAREN
//strlen 0 based so we add +1 to offset it
$start = strpos( $str,'(') +1;
//this is the location/index of the ) CLOSE_PAREN.
$end = strpos( $str,')');
//we need the length of the substring for the third argument, not its index
$len = ($end-$start);

echo substr($str, $start, $len );

Выходы

A-29

И вы можете проверить это здесь

http://sandbox.onlinephpfunctions.com/code/88723be11fc82d88316d32a522030b149a4788aa

Если бы это был я, я бы сравнил оба метода и посмотрел, какой из них быстрее.

4

Другие решения

Пусть это поможет вам.

function getStringBetween($str, $from, $to, $withFromAndTo = false)
{
$sub = substr($str, strpos($str,$from)+strlen($from),strlen($str));

if ($withFromAndTo) {
return $from . substr($sub,0, strrpos($sub,$to)) . $to;
} else {
return substr($sub,0, strrpos($sub,$to));
}

$inputString = "Abc/hello@gmail.com/1267890(A-29)";
$outputString = getStringBetween($inputString, '(', ')');

echo $outputString;
//output will be A-29

$outputString = getStringBetween($inputString, '(', ')', true);
echo $outputString;
//output will be (A-29)return $outputString;
}
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector