За последние 24 часа нас посетили 168608 программистов и 3028 роботов. Сейчас ищут 1739 программистов ...

Помогите написать регулярное выражение

Тема в разделе "Регулярные выражения", создана пользователем miha25, 10 фев 2013.

  1. miha25

    miha25 Активный пользователь

    С нами с:
    27 сен 2011
    Сообщения:
    39
    Симпатии:
    0
    кодировка UTF-8 без BOM
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    хм

    Код (Text):
    1. $ cat rpl2.php
    2. <?php
    3. $text = "Яркий чехол для iPhone 4/4S из силикона будет долго и надежно защищать Ваш смартфон от ударов, царапин, потертостей, пыли и остальных внешних факторов. Формы чехла в точности совпадают с габаритами iPhone 4/4s.
    4. Характеристики: материал - силикон, силикон, силикон, силикон, силикон, яркий, оригинальный чехол, удобно лежит в руке, есть все необходимые вырезы под боковые кнопки, гарнитуру, камеру, не скользит, плотно прилегает к телефону, легко одевается и снимается";
    5.  
    6. $tags = "iPhone,оригинальный,гарнитуру,телефону,снимается,силикон";
    7. $tmp = explode( ',', $tags );
    8. foreach( $tmp as $tag )
    9. {
    10.     $text = preg_replace("#\b({$tag})\b#iu", '<a href="http://site.ru/tags/$1/">$1</a>', $text, 1);
    11. }
    12.  
    13. var_dump( $text );
    14. ?>
    15.  
    16. $ php rpl2.php
    17. string(1141) "Яркий чехол для <a href="http://site.ru/tags/iPhone/">iPhone</a> 4/4S из силикона будет долго и надежно защищать Ваш смартфон от ударов, царапин, потертостей, пыли и остальных внешних факторов. Формы чехла в точности совпадают с габаритами iPhone 4/4s.
    18. Характеристики: материал - <a href="http://site.ru/tags/силикон/">силикон</a>, силикон, силикон, силикон, силикон, яркий, <a href="http://site.ru/tags/оригинальный/">оригинальный</a> чехол, удобно лежит в руке, есть все необходимые вырезы под боковые кнопки, <a href="http://site.ru/tags/гарнитуру/">гарнитуру</a>, камеру, не скользит, плотно прилегает к <a href="http://site.ru/tags/телефону/">телефону</a>, легко одевается и <a href="http://site.ru/tags/снимается/">снимается</a>"
     
  3. miha25

    miha25 Активный пользователь

    С нами с:
    27 сен 2011
    Сообщения:
    39
    Симпатии:
    0
    а у меня этот же код показывает вот так:

    Код (Text):
    1. string(871) "Яркий чехол для <a href="http://site.ru/tags/iPhone/">iPhone</a> 4/4S из силикона будет долго и надежно защищать Ваш смартфон от ударов, царапин, потертостей, пыли и остальных внешних факторов. Формы чехла в точности совпадают с габаритами iPhone 4/4s.
    2. Характеристики: материал - силикон, силикон, силикон, силикон, силикон, яркий, оригинальный чехол, удобно лежит в руке, есть все необходимые вырезы под боковые кнопки, гарнитуру, камеру, не скользит, плотно прилегает к телефону, легко одевается и снимается"
    убираю флаг U, все равно, что это может быть?
     
  4. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    размер литеры флага не путайте
     
  5. miha25

    miha25 Активный пользователь

    С нами с:
    27 сен 2011
    Сообщения:
    39
    Симпатии:
    0
    она маленькая, это я здесь написал большую
     
  6. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    и так делать нельзя. все символы которые могут иметь неоднозначное значение пишутся соответствующим размером
     
  7. miha25

    miha25 Активный пользователь

    С нами с:
    27 сен 2011
    Сообщения:
    39
    Симпатии:
    0
    попробовал заменить \b на \w, не помогло, вроде пишут что проблема может быть со стороны сервера
     
  8. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    а зачем вы это пробовали заменить а это?
     
  9. miha25

    miha25 Активный пользователь

    С нами с:
    27 сен 2011
    Сообщения:
    39
    Симпатии:
    0
    на другом форуме писали что может помочь, но видимо это вообще не то, а еще прочитал что \b не работает с кириллицей, хотя у вас же работает, почему же тогда у меня не работает, в общем голова уже кругом пошла
     
  10. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    где косяк?
     
  11. miha25

    miha25 Активный пользователь

    С нами с:
    27 сен 2011
    Сообщения:
    39
    Симпатии:
    0
    не знаю, но явно что-то не так
     
  12. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    я не телепат, настроек ваших не знаю. я много лет назад углубленно настроил сервера и все работает как мне нужно. как видите - какие-то из моих настроек заставляют работать код. или в другом дела. отладку проводите, ищите.
     
  13. miha25

    miha25 Активный пользователь

    С нами с:
    27 сен 2011
    Сообщения:
    39
    Симпатии:
    0
    ищу проблему, отпишусь как найду решение
     
  14. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Покажи конечный код, странно что у тебя не работает
     
  15. miha25

    miha25 Активный пользователь

    С нами с:
    27 сен 2011
    Сообщения:
    39
    Симпатии:
    0
    Вот, на сервере запускаю, обрабатывает только латиницу, слово iPhone, остальные нет

    Код (Text):
    1. $text = "Яркий чехол для iPhone 4/4S из силикона будет долго и надежно защищать Ваш смартфон от ударов, царапин, потертостей, пыли и остальных внешних факторов. Формы чехла в точности совпадают с габаритами iPhone 4/4s.
    2. Характеристики: материал - силикон, силикон, силикон, силикон, силикон, яркий, оригинальный чехол, удобно лежит в руке, есть все необходимые вырезы под боковые кнопки, гарнитуру, камеру, не скользит, плотно прилегает к телефону, легко одевается и снимается, ремонтируем";
    3.  
    4. $tags = "iPhone,оригинальный,гарнитуру,телефону,снимается,силикон,ремонт";
    5. $tmp = explode( ',', $tags );
    6. foreach( $tmp as $tag )
    7. {
    8.     $text = preg_replace("#\b({$tag})\b#iu", '<a href="http://site.ru/tags/$1/">$1</a>', $text, 1);
    9. }
    10.  
    11. var_dump( $text );
     
  16. miha25

    miha25 Активный пользователь

    С нами с:
    27 сен 2011
    Сообщения:
    39
    Симпатии:
    0
    Скорее всего проблема в том что в моей версии php метасимвол \b не работает с кириллицей, кто знает выход с положения?