UD
Новичок
PHP - регулярные выражения, поиск нескольких значений
Здравствуйте, как можно выполнить поиск трех и более значений в одной строке?
Пример:
$date = "2003-03-17, 2003-03-18, 2003-03-19";
ereg ("([0-9]{4,4}-[0-9]{2,2}-[0-9]{2,2})", $date, $regs);
echo $regs[0];
Данный код найдет и выведет только первую дату: 2003-03-17, а мне нужно что бы выводились все.
Пробывал использовать while, foreach все тоже самое.
Для perl существуют модификаторы, позволяющие делать то, что мне нужно, но я хочу решить данную задачу на php, т.к. скрипт будет написан на php, perl я не знаю.
На perl решается так:
Модификатор g делает поиск глобальным. В данном (скалярном) контексте perl помнит, где он остановился в строке при предыдущем поиске. Следующий поиск продолжается с отложенной точки. Без модификатора g команда m/.../ будет упорно находить первое вхождение буквы х, и цикл будет продолжаться бесконечно.
В отличие от команды m/.../ команда s/.../.../ с модификатором g выполняет глобальную замену за один раз, работая так, будто внутри нее уже имеется встроенный цикл поиска, подобный приведенному выше. Следующий пример за один раз заменяет все вхождения х на z:
$text = "Here is texxxxxt.";
$text =~ s/x/z/g;
print $text;
Here is tezzzzzt.
Для ereg не существует модификаторов, тогда я решил использовать заместо него preg_match, но для него не нашел модификаторов позволяющих решить данную задачу.
Как быть? Очень прошу помочь.
Заранее спасибо.
Здравствуйте, как можно выполнить поиск трех и более значений в одной строке?
Пример:
$date = "2003-03-17, 2003-03-18, 2003-03-19";
ereg ("([0-9]{4,4}-[0-9]{2,2}-[0-9]{2,2})", $date, $regs);
echo $regs[0];
Данный код найдет и выведет только первую дату: 2003-03-17, а мне нужно что бы выводились все.
Пробывал использовать while, foreach все тоже самое.
Для perl существуют модификаторы, позволяющие делать то, что мне нужно, но я хочу решить данную задачу на php, т.к. скрипт будет написан на php, perl я не знаю.
На perl решается так:
Модификатор g делает поиск глобальным. В данном (скалярном) контексте perl помнит, где он остановился в строке при предыдущем поиске. Следующий поиск продолжается с отложенной точки. Без модификатора g команда m/.../ будет упорно находить первое вхождение буквы х, и цикл будет продолжаться бесконечно.
В отличие от команды m/.../ команда s/.../.../ с модификатором g выполняет глобальную замену за один раз, работая так, будто внутри нее уже имеется встроенный цикл поиска, подобный приведенному выше. Следующий пример за один раз заменяет все вхождения х на z:
$text = "Here is texxxxxt.";
$text =~ s/x/z/g;
print $text;
Here is tezzzzzt.
Для ereg не существует модификаторов, тогда я решил использовать заместо него preg_match, но для него не нашел модификаторов позволяющих решить данную задачу.
Как быть? Очень прошу помочь.
Заранее спасибо.

