Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Наглая регулярка

346
20 сентября 2005 года
Новая папка
256 / / 24.12.2004
<?php
$text = "before text middle text after";
$text = ereg_replace("(.*)","was bold",$text);
echo $text;
?>
По ходу должно вывести

before was bold middle was bold after

А выводит

before was bold after

То есть он заменяет самые дальние. Что делать?
346
20 сентября 2005 года
Новая папка
256 / / 24.12.2004
вот нарыл такую комбинацию

preg_replace ("/\[b\](.*)\[\/b\]/U","\\1",$text);

вот оно уже работает, но если убрать /U, то оно тоже не будет работать.

Так в чём вооще причина??? И что это такое /U
513
21 сентября 2005 года
Yurec
228 / / 21.09.2005
Предлагаю так:
<?php
$text = "before text middle text after";
$text = ereg_replace("[а-яА-Яa-zA-Z0-9[:punct:]]{1,}","was bold",$text);
echo $text;
?>

где:
а-яА-Яa-zA-Z0-9 любая буква или цифра
[:punct:]-любой знак пунктцации
299
21 сентября 2005 года
3D Bob
885 / / 18.04.2005
Цитата:
Originally posted by Yurec
Предлагаю так:
<?php
$text = "before text middle text after";
$text = ereg_replace("[а-яА-Яa-zA-Z0-9[:punct:]]{1,}","was bold",$text);
echo $text;
?>

где:
а-яА-Яa-zA-Z0-9 любая буква или цифра
[:punct:]-любой знак пунктцации



Не поверишь, но наверху АНАЛОГИЧНЫЙ КОД, только более простой....
И ты тоже наляпал хрен знает сколько лишнего...

513
21 сентября 2005 года
Yurec
228 / / 21.09.2005
Если и я и они наляпали много лишнего, покажи как надо. Тем более что мне например понятнее мой вариант где всё понятно что мы выбираем для выражения.
299
21 сентября 2005 года
3D Bob
885 / / 18.04.2005
Цитата:
Originally posted by Yurec
Если и я и они наляпали много лишнего, покажи как надо. Тем более что мне например понятнее мой вариант где всё понятно что мы выбираем для выражения.


Он не наляпал ничего лишнего.
У него работает уже все нормально.
Проблема была не в том что не выбирался любой символ, а в том что он захватывал всю область, а не определенную.
Ты не правильно понел в чем у него проблема.
После выполнения твоего скрипта, аналогичного тому что есть у афтора, возникает тот же трабл.

513
21 сентября 2005 года
Yurec
228 / / 21.09.2005
Действительно не совсем понимаю что надо было. Я так понял надо щаменить все * на was bolt
299
21 сентября 2005 года
3D Bob
885 / / 18.04.2005
Цитата:
Originally posted by Yurec
Действительно не совсем понимаю что надо было. Я так понял надо щаменить все * на was bolt



Все верно, и в примере ниже заменялась выделенная часть

before text middle text after

Кстати, только сейчас подумал. В твоем же примере отсутвуют символы <> по идее должно работать правильно. Извиняюсь. У меня нет пхп чтобы проверить. Так что простите за простые догадки.

346
21 сентября 2005 года
Новая папка
256 / / 24.12.2004
Цитата:
Originally posted by 3D Bob
Все верно, и в примере ниже заменялась выделенная часть

before text middle text after

Кстати, только сейчас подумал. В твоем же примере отсутвуют символы <> по идее должно работать правильно. Извиняюсь. У меня нет пхп чтобы проверить. Так что простите за простые догадки.



Вообще то оно работает, если описывать посимвольно, даже если и есть <> (простите что забыл это написать). Но все равно не ясно почему ерег как-то с краю проверяет.

513
21 сентября 2005 года
Yurec
228 / / 21.09.2005
На самом деле всё правильно Если мы пишем
(.*), то заменяется всё от первого до последнего , так как (.*) - любое количество любых символов и он найдя строку по такому шаблону её заменяет. А если писать {1,}, то он будет подискивать шаблон типа 1 любой символ, 2 любых символа, 3 любых символа и тд и тогда будет заменять наименьшими строками, что нам и надо.
338
21 сентября 2005 года
chigevara
529 / / 29.09.2003
Цитата:
Originally posted by Yurec
На самом деле всё правильно Если мы пишем
(.*), то заменяется всё от первого до последнего , так как (.*)


Поиском когда научимся пользоваться. На днях обсуждали жадность квантификаторов.
(.*?) & relax.

299
21 сентября 2005 года
3D Bob
885 / / 18.04.2005
Цитата:
Originally posted by Yurec
На самом деле всё правильно Если мы пишем
(.*), то заменяется всё от первого до последнего , так как (.*) - любое количество любых символов и он найдя строку по такому шаблону её заменяет. А если писать {1,}, то он будет подискивать шаблон типа 1 любой символ, 2 любых символа, 3 любых символа и тд и тогда будет заменять наименьшими строками, что нам и надо.


Если открыть справочник, то там ясно сказано
{1,} равносильно *.

513
22 сентября 2005 года
Yurec
228 / / 21.09.2005
Цитата:
Originally posted by 3D Bob
Если открыть справочник, то там ясно сказано
{1,} равносильно *.


Но на деле с * и {1,} по разному. Что - то както многое не ясно. У кого есть инфа по регулярным выражениям?

299
22 сентября 2005 года
3D Bob
885 / / 18.04.2005
Цитата:
Originally posted by Yurec
Но на деле с * и {1,} по разному. Что - то както многое не ясно. У кого есть инфа по регулярным выражениям?



Ничего не по разному. И я ошибся...
Вот на держи

Цитата:

Для удобства (и обратной совместимости) три наиболее распространённых квантификатора имеют односимвольные сокращения:

* эквивалентен {0,}
+ эквивалентен {1,}
? эквивалентен {0,1}



http://web.php.net.ua/manual/php4/pcre.pattern.syntax.html

513
22 сентября 2005 года
Yurec
228 / / 21.09.2005
Цитата:
Originally posted by 3D Bob
Ничего не по разному. И я ошибся...
Вот на держи


http://web.php.net.ua/manual/php4/pcre.pattern.syntax.html



ОК. Спасибо.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог