Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: В чем ошибка регулярного выражения
 
 автор: SerBoroda   (11.09.2011 в 21:10)   письмо автору
 
 

Есть вот такая регулярка
{"id":([0-9]+),"name":"([a-zA-Z\s]+)"

ищет в данном тексте

{"count":53,"num":100,"q":"make","start":0,"data":[{"id":25,"name":"Acura","url":"http://buyersguide.caranddriver.com/acura","make_icon":"http://buyersguide.caranddriver.com/media/icons/make/25.png"},{"id":52,"name":"Alfa Romeo","url":"http://buyersguide.caranddriver.com/alfa-romeo","make_icon":"http://buyersguide.caranddriver.com/media/icons/make/52.png"},{"id":26,"name":"Aston Martin","url":"http://buyersguide.caranddriver.com/aston-martin","make_icon":"http://buyersguide.caranddriver.com/media/icons/make/26.png"},{"id":27,"name":"Audi","url":"http://buyersguide.caranddriver.com/audi","make_icon":"http://buyersguide.caranddriver.com/media/icons/make/27.png"},

В конструкторе выбивает правильно, но почему то в программе мне не хочет находить. Где моя ошибка? подскажите пожалуйста?!
и дальше еще подобного кода раз 50

  Ответить  
 
 автор: SerBoroda   (11.09.2011 в 21:41)   письмо автору
 
   для: SerBoroda   (11.09.2011 в 21:10)
 

я тут поклацал, походу тут проблемма какаято с с айтом мож..а то не хочет даже просто обычный символ выводить

сайт следующий
http://buyersguide.caranddriver.com/api/feed/?mode=json&q=make

  Ответить  
 
 автор: Deed   (13.09.2011 в 20:33)   письмо автору
 
   для: SerBoroda   (11.09.2011 в 21:41)
 

/\"id\":\d+?,\"name\":\"[\w(\s*)]+\"/s

  Ответить  
 
 автор: f111   (14.09.2011 в 02:00)   письмо автору
 
   для: Deed   (13.09.2011 в 20:33)
 

[\w(\s*)]+ - ой-ёй-ёй. почитай про квадратные скобки.

http://www.regexpr.ru/?pattern=%2F[\w%28\s*%29]%2B%2F&subject=svsdv+%28%28*++*%29%29
Всего совпадений 1
1 : svsdv ((* *))


хотя может так и задумано(

  Ответить  
 
 автор: Deed   (14.09.2011 в 08:06)   письмо автору
60.2 Кб
 
   для: f111   (14.09.2011 в 02:00)
 

Тихо, тихо. Я в курсе особенностей квадратных скобок. Но работает ведь.
А если не включить (\s*) в [\w(\s*)]+, тогда не найдем Альфа Ромео.


<?php
$text
=<<< DEED
{"count":53,"num":100,"q":"make","start":0,"data":[{"id":25,"name":"Acura","url":"http://buyersguide.caranddriver.com/acura","make_icon":"http://buyersguide.caranddriver.com/media/icons/make/25.png"},{"id":52,"name":"Alfa Romeo","url":"http://buyersguide.caranddriver.com/alfa-romeo","make_icon":"http://buyersguide.caranddriver.com/media/icons/make/52.png"},{"id":26,"name":"Aston Martin","url":"http://buyersguide.caranddriver.com/aston-martin","make_icon":"http://buyersguide.caranddriver.com/media/icons/make/26.png"},{"id":27,"name":"Audi","url":"http://buyersguide.caranddriver.com/audi","make_icon":"http://buyersguide.caranddriver.com/media/icons/make/27.png"},
DEED;

$count=preg_match_all("/\"id\":\d+?,\"name\":\"[\w(\s*)]+\"/s",$text,$outs);

echo 
"count of matches is ".$count."<br>";

echo 
"<pre>";
print_r($outs);
echo 
"</pre>";

/* In the result:

count of matches is 4
Array
(
    [0] => Array
        (
            [0] => "id":25,"name":"Acura"
            [1] => "id":52,"name":"Alfa Romeo"
            [2] => "id":26,"name":"Aston Martin"
            [3] => "id":27,"name":"Audi"
        )

)
*/
?>


Хотя, это не существенно. Здесь можно было написать и так:
/\"id\":\d+?,\"name\":\".+?\"/s

  Ответить  
 
 автор: f111   (14.09.2011 в 14:15)   письмо автору
 
   для: Deed   (14.09.2011 в 08:06)
 

>Но работает ведь.

я и не спорю, особенно подойдёт для такого примера
"id":52,"name":"Alfa(****()()()()()****(0) Romeo"

>Здесь можно было написать и так:
>/\"id\":\d+?,\"name\":\".+?\"/s

или твой первый вариант, но без "круглых скобок и звёздочки"
/\"id\":\d+?,\"name\":\"[\w\s]+\"/s

>Я в курсе особенностей квадратных скобок

тогда перечитай)) так как подшаблон в квадратных скобках будет набором символов, в данном случае:
[0-9A-Za-z_()* и пробел]

  Ответить  
 
 автор: Deed   (14.09.2011 в 15:22)   письмо автору
 
   для: f111   (14.09.2011 в 14:15)
 

Да знаю я, Aardvark )))
И от имени любителей - спасибо тебе!

  Ответить  
 
 автор: f111   (14.09.2011 в 15:30)   письмо автору
 
   для: Deed   (14.09.2011 в 15:22)
 

а я не знаю "Aardvark".

>И от имени любителей - спасибо тебе!

получается и от моего имени мне-же спасибо))

  Ответить  
 
 автор: Deed   (14.09.2011 в 15:37)   письмо автору
 
   для: f111   (14.09.2011 в 15:30)
 

Ну как же?! «Aardvark» - дальний бомбардировщик F111

Одним словом, SerBoroda, итог раздумий и диспутов для данного конкретного случая:
/\"id\":\d+?,\"name\":\"[\w\s]+\"/s

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования