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

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

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

 

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

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

тема: Поиск в кавычках
 
 автор: pina   (02.02.2008 в 17:26)   письмо автору
 
 

Есть например мета теги типа:

<meta name="description" content="content content"/>
<meta name="description" content="content content">
<meta content="content content" name="description"/>
<meta content="content content" name="description">


Как вытащить значения 'name' и 'content'?
При чем может быть как "content content" так и 'content content', но не "content content' и 'content content".

   
 
 автор: ddhvvn   (02.02.2008 в 17:55)   письмо автору
 
   для: pina   (02.02.2008 в 17:26)
 


<?php
  preg_match
("#name=(\"|\')([^\"\']*)(\"|\')#"$text$buf);

  echo 
$buf[2][0]; // покажет содержимое name
?>


у меня вроде так работало...

   
 
 автор: ЯR   (02.02.2008 в 18:04)   письмо автору
 
   для: pina   (02.02.2008 в 17:26)
 


<?php

$text 
= <<<TEXT
<meta name="description" content="content content"/>
<meta name="description" content="content content">
<meta content="content content" name="description"/>
<meta content="content content" name="description"> 
TEXT;

preg_match_all('#<meta\s+(?:name=(["\'])(?P<name1>.*)\1\s+content=(["\'])(?P<content1>.*)\3|content=(["\'])(?P<content2>.*)\5\s+name=(["\'])(?P<name2>.*)\7).*>#isU'$text$regs);

print_r($regs);

// правда тут еще пустые значения будут, но их можно не обрабатывать

   
 
 автор: pina   (02.02.2008 в 18:58)   письмо автору
 
   для: ЯR   (02.02.2008 в 18:04)
 

что значит (?P<name1>.*) и тому подобные записи?

   
 
 автор: ЯR   (02.02.2008 в 19:18)   письмо автору
 
   для: pina   (02.02.2008 в 18:58)
 

Если не ошибаюсь, это называется «именованным шаблоном», то, что в треугольных скобках - имя шаблона, также их можно и в preg_replace юзать

   
 
 автор: ddhvvn   (02.02.2008 в 21:03)   письмо автору
 
   для: ЯR   (02.02.2008 в 19:18)
 

хм.. зачем такое громоздкое? =)

   
 
 автор: ЯR   (02.02.2008 в 22:55)   письмо автору
 
   для: ddhvvn   (02.02.2008 в 21:03)
 

Оно найдет все пары name-content meta-тегов в коде, насколько я понял, нужно было именно это.

   
 
 автор: pina   (03.02.2008 в 10:08)   письмо автору
 
   для: ЯR   (02.02.2008 в 22:55)
 

Да именно это и надо было, спасибо!

   
Rambler's Top100
вверх

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