PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (5): « 1 2 [3] 4 5 »

> Найдено сообщений: 72
duhon Отправлено: 12 Марта, 2014 - 11:27:59 • Тема: Найти внутренние ссылки в тексте и обернуть в тег • Форум: Регулярные выражения

Ответов: 1
Просмотров: 496
я так понял 2 задания
1) обвернуть ссылки в теги
2) сократить ссылки

для первого все просто
PHP:
скопировать код в буфер обмена
  1. $content = 'text text http://site.ru/bla/bla/index.html text text';
  2. $result = preg_replace('/http:.*?\.html/i', '<a href=\'$0\'></a>', $content);
  3. print_r($result); //text text <a href='http://site.ru/bla/bla/index.html'></a> text text


а для второго, регуляками надо попотеть, проще функциями php доделать
duhon Отправлено: 12 Марта, 2014 - 11:17:51 • Тема: Помогите разобрать • Форум: Регулярные выражения

Ответов: 8
Просмотров: 413
вам дали очень хороший намек (избавиться от фигурных скобок)
PHP:
скопировать код в буфер обмена
  1. $content = '<div id="rates-deposit">
  2.        <table cellspacing="0">
  3.                <tr>
  4.                        <th>EUR</th>
  5.                        <th>USD</th>
  6.                        <th>CNY</th>
  7.                        <th>JPY</th>
  8.                </tr>
  9.                <tr>
  10.                        <td class="u">50,50<ins></ins></td>
  11.                        <td class="u">36,45<ins></ins></td>
  12.                        <td class="u">5,96<ins></ins></td>
  13.                        <td class="n">0,36<ins></ins></td>
  14.                </tr>
  15.        </table>
  16. </div>';
  17. preg_match("#<tr>(.*?)</tr>#is",$content,$array);
  18. print_r($array);

вывод будет
CODE (htmlphp):
скопировать код в буфер обмена
  1. Array
  2. (
  3.     [0] => <tr>
  4.                         <th>EUR</th>
  5.                         <th>USD</th>
  6.                         <th>CNY</th>
  7.                         <th>JPY</th>
  8.                 </tr>
  9.     [1] =>
  10.                         <th>EUR</th>
  11.                         <th>USD</th>
  12.                         <th>CNY</th>
  13.                         <th>JPY</th>
  14.                
  15. )

единственное что еще упустили это добавить нежадный режим
duhon Отправлено: 12 Марта, 2014 - 11:07:06 • Тема: что такого особенного в этом пункте списка??? • Форум: Регулярные выражения

Ответов: 6
Просмотров: 293
проблема не в регулярке, а в исходных данных. Точней в том как вы их записали.

Короче поменяйте двойные кавычки на одинарные при объявлении
Цитата:
$subject = "

Тоесть не находит потому что сочетание символов "\r" это перенос строки. Обратите внимание как в вашем примере подсвечивает синтаксис.

З.Ы. Структурированный html парсите специальными средствами а не регуляркой. (это будет плюс в карму професионализма)
duhon Отправлено: 06 Марта, 2014 - 10:19:44 • Тема: Регулярка (выдерание цыфр) • Форум: Регулярные выражения

Ответов: 1
Просмотров: 227
PHP:
скопировать код в буфер обмена
  1. preg_match_all('/value="(\d+)"/', '<input type="hidden" name="CK" value="992431121310420"/><input type="hidden" name="CK" value="1111111"/>', $match);
  2. print_r($match);
  3.  


результат
CODE (htmlphp):
скопировать код в буфер обмена
  1. (
  2.     [0] => Array
  3.         (
  4.             [0] => value="992431121310420"
  5.             [1] => value="1111111"
  6.         )
  7.  
  8.     [1] => Array
  9.         (
  10.             [0] => 992431121310420
  11.             [1] => 1111111
  12.         )
  13.  
  14. )
duhon Отправлено: 05 Марта, 2014 - 10:06:40 • Тема: Парсер • Форум: Регулярные выражения

Ответов: 1
Просмотров: 132
посмотри в гугле "html parser php"

огромный выбор инструментария. Регулярки тут ненужны.
duhon Отправлено: 26 Февраля, 2014 - 13:00:45 • Тема: Регулярное выражеие • Форум: Регулярные выражения

Ответов: 15
Просмотров: 743
в качестве спортивного интереса написал регулярку
PHP:
скопировать код в буфер обмена
  1.    '`{([^{}]+)}(\(((?>[^()]+|(?2))*)\))`', //regex
  2.    'test {22413}(ghfhgfhg(())sd(d)sf) s{1}(l(k)l)dfdsf {5}(45d4fsdf4)',  //string
  3.    $match,
  4.    PREG_SET_ORDER
  5. );


выводить будет такой (интересны только 1 и 3 группа)
PHP:
скопировать код в буфер обмена
  1. (
  2.     [0] => Array
  3.         (
  4.             [0] => {22413}(ghfhgfhg(())sd(d)sf)
  5.             [1] => 22413
  6.             [2] => (ghfhgfhg(())sd(d)sf)
  7.             [3] => ghfhgfhg(())sd(d)sf
  8.         )
  9.  
  10.     [1] => Array
  11.         (
  12.             [0] => {1}(l(k)l)
  13.             [1] => 1
  14.             [2] => (l(k)l)
  15.             [3] => l(k)l
  16.         )
  17.  
  18.     [2] => Array
  19.         (
  20.             [0] => {5}(45d4fsdf4)
  21.             [1] => 5
  22.             [2] => (45d4fsdf4)
  23.             [3] => 45d4fsdf4
  24.         )
  25.  
  26. )
duhon Отправлено: 12 Февраля, 2014 - 19:24:29 • Тема: Текст между скобками вместе со скобками • Форум: Регулярные выражения

Ответов: 4
Просмотров: 248
а как уже пробовал сделать?
duhon Отправлено: 12 Февраля, 2014 - 18:12:17 • Тема: Почему вызываетья 2 раза функция • Форум: Регулярные выражения

Ответов: 3
Просмотров: 241
нашел ответ

ответ немного встяхивает мозг, поэтому оставлю без ответа, для любителей задачек Радость
duhon Отправлено: 12 Февраля, 2014 - 17:54:25 • Тема: Почему вызываетья 2 раза функция • Форум: Регулярные выражения

Ответов: 3
Просмотров: 241
Почему вызываетья 2 раза функция $this->fun1()

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. class Test
  3. {
  4.     public function fun1(){
  5.         static $var = 1;
  6.         return $var++;
  7.     }
  8.  
  9.     public function fun2(){
  10.         echo preg_replace_callback('/.*/', function($find){return $this->fun1().$find[0];}, 'test');
  11.     }
  12. }
  13.  
  14. $t = new Test;
  15.  
  16. $t->fun2();
  17.  
  18. //результат 1test2


хотя ожидаеться 1test
duhon Отправлено: 27 Января, 2014 - 15:15:05 • Тема: HELP!!! Помогите поправить регулярное выражение для поиска телефона по маске. • Форум: Регулярные выражения

Ответов: 14
Просмотров: 1933
я вспомнил, такой подход встречал в проекте с php4
имхо (bool) как то лучше выглядит.
и пожалуй лучше тогда уже

CODE (htmlphp):
скопировать код в буфер обмена
  1. // Фильтрация.
  2. $result = preg_grep($pattern, $rgNum);

вместо
PHP:
скопировать код в буфер обмена
  1. // Фильтрация.
  2. $result = array_filter($rgNum, function($num) use ($pattern) {
  3.     return !!preg_match($pattern, $num);
  4. })
duhon Отправлено: 27 Января, 2014 - 13:37:02 • Тема: HELP!!! Помогите поправить регулярное выражение для поиска телефона по маске. • Форум: Регулярные выражения

Ответов: 14
Просмотров: 1933
Цитата:
return !!preg_match($pattern, $num);

два восклицания это опечатка или как это работает?
duhon Отправлено: 27 Января, 2014 - 11:42:56 • Тема: HELP!!! Помогите поправить регулярное выражение для поиска телефона по маске. • Форум: Регулярные выражения

Ответов: 14
Просмотров: 1933
пока что так придумал, учитывает только схожесть с предедущими цифрами, а я так понял что нужно учитывать уникальность для каждой буквы. Но пока что правильно мыслю что тебе нужно?
PHP:
скопировать код в буфер обмена
  1. $num = '7778855';
  2. $mask = 'aabb';
  3. $pattern = '/()?';
  4. $arr = array('');
  5. for($i=0;$i<strlen($mask);$i++)
  6. if(in_array($mask[$i] , $arr)) $pattern .= '\\'.array_search($mask[$i] , $arr);
  7. else {$pattern .= '([^\g{-1}])';$arr[] = $mask[$i];}
  8. $pattern .= '/';
  9. var_dump($pattern);
  10. var_dump(preg_replace($pattern, '<$0>', $num));

Цитата:
string(37) "/()?(?!\g{-1})(\d)\2(?!\g{-1})(\d)\3/"
string(9) "7<7788>55"
duhon Отправлено: 22 Января, 2014 - 10:08:53 • Тема: Помогите заменить eregi() в скрипте.. • Форум: Регулярные выражения

Ответов: 4
Просмотров: 276
я вижу Кузя не смотрел ссылку которую я кидал! Хм
Я опишу действия которое вы должны были сделать.
1) открыть http://php.net/manual/ru/function.eregi.php и узнать что делает функция eregi, верней вспомнить что это posix, и что это поиск совпадения без учета регистра.
2) потом увидеть "С версии PHP 5.3.0 эта функция считается УСТАРЕВШЕЙ. ", задуматься как исправить и увидеть примечание "С версии PHP 5.3.0, расширение regex помечено и заменено расширением PCRE. Вызов этой функции приведет к ошибке уровня E_DEPRECATED. Смотрите список отличий для помощи при конвертировании в PCRE." в котором указана ссылка http://www.php.net/manual/ru/ref...attern.posix.php
3) на новой ссылке всего три пункта которые нужно применить к вашей устаревшей функции eregi("(jpg|jpeg|gif|png)$",$file)
3.1) "Функции PCRE требуют, чтобы шаблон был заключен в разделители." добавляем eregi("/(jpg|jpeg|gif|png)$/",$file)
3.2) "В отличие от POSIX, в расширении PCRE нет специальных функций для поиска совпадений без учета регистра. Вместо них используется модификатор шаблона i (PCRE_CASELESS)." добавляем eregi("/(jpg|jpeg|gif|png)$/i",$file)
3.3) в вашем случае неважен
4) Смотрим таблицу "Замены для функций" и применяем preg_match("/(jpg|jpeg|gif|png)$/i",$file)
5) Проверить работу, и если не работает, писать на форуме, "блин я побывал так и так, но у меня не вышло"

З.Ы. чисто из любопытства, что делает эта регулярка?
CODE (htmlphp):
скопировать код в буфер обмена
  1. $blank = ereg_replace ("<br>", "<br>", $blank);
duhon Отправлено: 20 Января, 2014 - 13:18:09 • Тема: Регулярка • Форум: Регулярные выражения

Ответов: 4
Просмотров: 255
(?<=\d{2})\) под курсором пападает первая закрывающаяся скобка, потом идет проверка (?!.*\d{2}\)) существует ли дальше закрывающася скобка, если существует значит текущая найденная позиция неудовлетворительная, продолжаеться поиск дальше, под (?<=\d{2})\) попадает реально последняя скобка, делается проверка (?!.*\d{2}\)), результат которой отсуствие закрывающий скобок впереди, регулярка делает подмену.
duhon Отправлено: 20 Января, 2014 - 11:49:46 • Тема: Правильным ли путем иду. • Форум: Регулярные выражения

Ответов: 5
Просмотров: 255
какойто не правильный способ решения через
CODE (htmlphp):
скопировать код в буфер обмена
  1. php_value auto_prepend_file "redir.php"

ну подгрузиться у нас скрипт раньше других, и что там будет? Абсолютная ссылка генериться будет где то ниже этого скрипта. Ну если предложить что домен для абсолютной ссылки генериться на основе $_SERVER["HTTP_HOST"] и в вашем скрипте подменить эти данные, но все может выйти и регулярка не нужна.

Еще могу представить себе такой вариант скрипта
CODE (htmlphp):
скопировать код в буфер обмена
  1. function change_host($buffer)
  2. {
  3.   // заменить все старые домены
  4.   return (str_replace("domain.ru", "old.domain.ru", $buffer));
  5. }
  6. ob_start("change_host");

это уже лучше, но ненадежно, вдруг заменит не то что нужно, или не там где нужно, заменить str_replace на preg_replace улучшит ситуацию, но ненамного, и самое главное лишняя нагрузка, все время подправлять скрипт в доменах.

Еще вижу вариант с настройкой апача на редирет на основной домене, тоесть на сайте domain.ru проверяется например referer и делает редирект на old.domain.ru.

Ну самый хороший вариант это просто подправить проект, и выпилить все абсолютные ссылки, тут даже можно применить регулярные выражения.

Страниц (5): « 1 2 [3] 4 5 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB