Форум сетевых администраторов
Показаны 3 сообщений на этой странице

Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- PHP (http://netadmin.ws/forum/forumdisplay.php?forumid=6)
-- Вернуть часть строки слева и справа от подстроки (http://netadmin.ws/forum/showthread.php?threadid=10569)


Помещено Lesnix 19-04-2005 в 22:31:

Question Вернуть часть строки слева и справа от подстроки

Всезнающий all !
Помоги разобраться
Есть две строки:
1. "Lesnix - это тот же самый лесник, только заканчивается на букву икс"
2. "самый лесник"

Как видите строка 2 является частью строки 1. Необходимо выбрать часть строки 1 начиная за 8 символов до строки 2, строку 2, а затем 8 символов после строки 2.
То есть:

PHP:


$str1
="Lesnix - это тот же самый лесник, только заканчивается на букву икс";
$str2="самый лесник";

echo(
"...".foo($str1,$str2,8,8)."...");


В нашем случае должно быть выведено: "... тот же самый лесник, только..."
Напишите функцию foo() наиболее рациональным способом
...или, может быть, замечательный язык PHP уже содержит такую или подобную функцию ?


Помещено Nevermind 21-04-2005 в 08:11:

Замечательный язык содержит функцию preg_match(); которая может возвращать массив совпадений. В шаблоне поиска можно занести в скобки те элементы, которые должны быть в конечном массиве. А потом уже обычной строковой substr(); обрезать до нужной длины.


Помещено Lesnix 21-04-2005 в 20:13:

Nevermind,... Ð_то, конечно, вариант...но не такой уж рациональный...
А ответ пришел с Codenet'a

PHP:


$str1
="Lesnix - это тот же самый лесник, только заканчивается на букву икс"; 
$str2="самый лесник"; 

function 
foo($str1,$str2,$n1,$n2) { 
    
$p=strpos($str1,$str2); 
    if (
$p) { 
        return(
substr($str1,$p-8,strlen($str2)+16)); 
        } 
    return(
""); 
    } 

echo(
"...".foo($str1,$str2,8,8)."...");


Формат времени GMT. Текущее время 00:53.
Показаны 3 сообщений на этой странице

Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.