Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Что не так с регуляркой?
Форумы портала PHP.SU » PHP » Регулярные выражения » Что не так с регуляркой?

Страниц (1): [1]
 

1. Viper - 09 Февраля, 2010 - 14:14:41 - перейти к сообщению
есть такое
CODE (html):
скопировать код в буфер обмена
  1. <td class="nm"><a href="/name/nm0347797/" onclick="(new Image()).src='/rg/castlist/position-1/images/b.gif?link=/name/nm0347797/';">bullet</a></td>

после
PHP:
скопировать код в буфер обмена
  1. preg_match('/<table class="cast">(.+)<\/table>/', $f, $hit);

получаем такое
CODE (html):
скопировать код в буфер обмена
  1. <td class="nm"><a href="/name/nm0347797/">bullet</a></td>

после
PHP:
скопировать код в буфер обмена
  1. preg_match('/<td class="nm"><a href="\/name\/nm\d{1,8}\/">bullet<\/a><\/td>/i',$s,$results);

получаем трехпальцевую фигуру... В чем затык?
2. Champion - 09 Февраля, 2010 - 14:30:27 - перейти к сообщению
В скобки возьми. Ты число \d{1,8} вот это выдрать патылся?
3. Viper - 09 Февраля, 2010 - 16:13:13 - перейти к сообщению
Champion пишет:
В скобки возьми. Ты число \d{1,8} вот это выдрать патылся?

не совсем. мне текст bullet нужен.
4. kochan10 - 09 Февраля, 2010 - 19:42:29 - перейти к сообщению
Млин, я туплю, поэтому стираю предыдущие коменты))) Я просто в тему не въехал.
Что именно из чего получаешь и что нужно?
5. movEAX - 09 Февраля, 2010 - 21:22:38 - перейти к сообщению
Цитата:
'/<td class="nm"><a href="\/name\/nm\d{1,8}\/">bullet<\/a><\/td>/i'

Ну что вы все так извращаетесь с "/". Не проще написать вот так?
@<td class="nm"><a href="/name/nm\d{1,8}/">bullet</a></td>@i

По теме:
Если нужен текст внути тега <a>. То пользуйте такой шаблон:
@<a[^>]+>([^<]+?)@
6. Viper - 10 Февраля, 2010 - 07:48:42 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. preg_match('@<td class="nm"><a href="/name/nm\d{1,8}/">bullet</a></td>@i',$s,$results);

результата 0
7. Champion - 10 Февраля, 2010 - 10:18:00 - перейти к сообщению
Viper пишет:
не совсем. мне текст bullet нужен.
Его и возьми в скобки:
CODE (htmlphp):
скопировать код в буфер обмена
  1. /<td class="nm"><a href="\/name\/nm\d{1,8}\/">(\w+)<\/a><\/td>/i
8. Viper - 10 Февраля, 2010 - 11:29:41 - перейти к сообщению
Champion спсб! получилось. и вопрос в продолжение... если к примеру строка вида

CODE (html):
скопировать код в буфер обмена
  1. </h5><small> (<a href="/wga">WGA</a>)</small></td></tr><tr><td valign="top"><a href="/name/nm0472567/"></a></td><td>&nbsp;</td><td valign="top">(written by) & </td></tr><tr><td valign="top"><a href="/name/nm0649460/">Roberto Orci</a></td><td>&nbsp;</td><td valign="top">(written by) & </td></tr><tr><td valign="top"><a href="/name/nm0476064/">Alex Kurtzman</a></td><td>&nbsp;</td><td valign="top">(written by


т.е. можно ли выбрать все имена до определенного символа(ов к примеру ")<br>")
preg_match('@<a href="/name/nm\d{1,8}/">(.*)</a>@isU', $hit[1], $s);
он выведет только первое, что и понятно. как указать ему что "продолжить поиск" дальше "до"...
9. Champion - 10 Февраля, 2010 - 11:51:29 - перейти к сообщению
что-то я не совсем понял. Пример можешь написать? Типа есть строка из нее получить строку такую и такую.
Кстати, будет лучше, если ты не будешь пользоваться подсветкой ситаксиса, а то как-то не удобно читается) Сунь не в [code], а в [quote]
10. Viper - 10 Февраля, 2010 - 12:31:24 - перейти к сообщению
ну это не совсем строка, это я уже привел её к такому виду. вообще это документ
к примеру http://www[dot]imdb[dot]com/title/tt1055369/fullcredits получаю отсюда сырец. далее мне нужно получить "Writing credits", "Cast" и т.д. т.е. имена и фамилии без тегов html. собственно порезать документ на нужные части не составляет труда. проблема с отсеиванием нужных строк.
11. Champion - 10 Февраля, 2010 - 13:08:03 - перейти к сообщению
preg_match_all() и регулярку, которая отюда вытащит:
<a class="glossary" name="writers" href="/Glossary/W#writer">Writing credits</a>
12. Viper - 10 Февраля, 2010 - 16:00:51 - перейти к сообщению
Все. Сделал Улыбка

PHP:
скопировать код в буфер обмена
  1. function getMovieScenarists($imdb_website) {
  2.         if (preg_match('@<a[^>]*>Writing credits</a>(.*)\)<br[^>]*>@isU', $imdb_website, $hit)) {
  3.                 preg_match_all('@<a href="/name/nm\d{1,8}/">(.*)</a>@isU', $hit[1], $matches);
  4.                 $result_temp = implode(', ', $matches[1]);
  5.                 $result_decoded = html_entity_decode($result_temp);
  6.                 $result = preg_replace('~&#x([0-9a-f]+);~ei', 'chr(hexdec("\\1"))', $result_decoded);
  7.                 // return string
  8.                 return $result;
  9.         } else {
  10.                 return false;
  11.         }
  12. }

 

Powered by ExBB FM 1.0 RC1