| |
|
|
| | Вопрос следующий. Допустим, у меня есть блок текста.
Необходимо осуществить поиск строки в этом тексте по ее началу и вернуть всю строку.
Т.е., мне нужно что-то вроде этого:
Раз два три строка 1
Три два один строка 2
Четыре пять шесть строка 3
$string = SomeFunction("Три два")
В результате переменная $string должна содержать всю строку, т.е. Три два один строка 2
Надеюсь, объяснил понятно. Жду ответа. Заранее спасибо. | |
| |
|
|
| |
|
|
| |
для: Медвед
(05.06.2007 в 11:08)
| | |
<?php
$text = 'Раз два три строка 1
Три два один строка 2
Четыре пять шесть строка 3';
function SomeFunction($query) {
global $text;
$return = substr($text, strpos($text, $query), strpos($text, "\n"));
return $return;
}
$string = SomeFunction("Три два");
echo $string;
?>
|
| |
| |
|
|
| |
|
|
| |
для: mihdan
(05.06.2007 в 11:14)
| | | Второй параметр ф-ии substr не позиция конца, а длина строки. А тут просто совпадение.
Я бы предложил что-то вроде
<?php
$text = '..................';
function SomeFunction($text, $query) {
$return = '';
$posl = strpos($text, $query);
// в последней строке может не быть \n
if (strpos($text, "\n", $posl) !== false)
$posr = strpos($text, "\n", $posl);
else $posr = strlen($text);
// подстрока может быть не найдена
if ($posl !== false)
$return = substr($text, $posl, $posr - $posl);
return $return;
}
echo SomeFunction($text, "Три два");
|
В PHP5 появилась регистронезависимая ф-я stripos, если нужно, можно использовать ее. | |
| |
|
|
| |
|
|
| |
для: kasmanaft
(05.06.2007 в 16:40)
| | | Это сработало :)
Теперь обратный вопрос: как вернуть НАЧАЛО строки по ее концу, причем сам конец включать не надо?
Пример:
Раз два три четыре пять
Какая-тоТамФункция(четыре)
Результат - раз два три
P.S. Более неактуально, сам разобрался =) | |
| |
|
|
| |
|
|
| |
для: Медвед
(05.06.2007 в 11:08)
| | |
<?php
$s='Раз два три строка 1
Три два один строка 2
Четыре пять шесть строка 3';
$need='Три два';
preg_match('|'.$need.'[^\n]+\n|',$s,$arr);
print_r($arr);
?>
|
к последней строке надо добавить \n :) | |
| |
|
|
| |
|
|
| |
для: Disable
(05.06.2007 в 17:39)
| | | А можно последнюю \n убрать. (или заменить ее на (\n|$). правда тогда придется ограничители изменить) | |
| |
|
|
| |
|
|
| |
для: kasmanaft
(05.06.2007 в 17:51)
| | | preg_match('|'.$need.'[^\n]+\n|',$s."\n",$arr); | |
| |
|
|
| |
|
|
| |
для: Disable
(05.06.2007 в 18:20)
| | | А если этот перенос там не нужен? скажите потом rtrim делать?
Зачем зря городить, когда можно исправить рег. выражение. | |
| |
|
|
| |
|
|
| |
для: kasmanaft
(05.06.2007 в 19:03)
| | | trim() работает молниеносно, исправить рег.выражение конечно тоже можно :) | |
| |
|
|