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 :: Версия для печати :: спарсить весь alt=""
Форумы портала PHP.SU » PHP » Регулярные выражения » спарсить весь alt=""

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

1. xhugo - 28 Апреля, 2011 - 21:34:13 - перейти к сообщению
нужно вытащить все и всех содержимое параметра alt=""
у всех элементов страницы..

пробую так:
PHP:
скопировать код в буфер обмена
  1. preg_match('|alt="(.*)"|im',file_get_contents(""),$p;
  2. foreach($p[0] as $z)
  3. {
  4. echo $z.'<hr>';
  5. }


но парсится только несколько элемнов, т.е. не все
2. Саныч - 28 Апреля, 2011 - 21:39:23 - перейти к сообщению
может preg_match_all?
3. DlTA - 28 Апреля, 2011 - 22:04:44 - перейти к сообщению
и со скобками туго
xhugo пишет:
preg_match('|alt="(.*)"|im',file_get_contents(""),$p;
закрывающей нет.
кавычки бывают еще и одинарные,
между alt и = иногда пробелы бывают, после = тоже иногда ставят
вроде все.
4. xhugo - 28 Апреля, 2011 - 22:06:57 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. <?
  2. $zz="http://blackquote.ru/last.php";
  3. preg_match_all('|alt="(.*)"|im',file_get_contents($zz),$proxy);  
  4.   foreach($proxy[0] as $s)  
  5.   {
  6. echo $s.'<hr>';
  7. }
  8. ?>


пробовал.
тоже не все
5. Саныч - 28 Апреля, 2011 - 23:06:18 - перейти к сообщению
xhugo, может и в правду пробелы есть?
попробуй еще это
6. DlTA - 29 Апреля, 2011 - 00:09:34 - перейти к сообщению
Саныч пишет:
|alt\s?=\s?"(.*)"|im

уж лучше тогда |alt\s*=\s*["'](.*)["']|im
7. evgenijj - 29 Апреля, 2011 - 00:09:54 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $text = '<a href="first.php" alt="first">aaa</a><img src="second.php" alt="second" />';
  3. $pattern = '~alt\s*=\s*("|\')[^\'"]?(1)~im';
  4. $text = preg_match_all( $pattern, 'third', $text );
  5. ?>

Я здесь не предусмотрел, если чел напишет <a href=http://server.com>server.com</a> Браузеры это понимают.
8. xhugo - 29 Апреля, 2011 - 15:43:33 - перейти к сообщению
Саныч, парсит так же как и у меня.

evgenijj , что то не сработал ваш код
9. xhugo - 30 Апреля, 2011 - 16:36:30 - перейти к сообщению
даже например не спарсило
CODE (htmlphp):
скопировать код в буфер обмена
  1. <img src="created/1304170582.jpg" alt="Бесит, что когда у тебя очень мало времени, ну минут буквально 15, и
  2. ты заходишь вконтакт, все это как чувствуют и начинают писать. все!
  3. а когда у тебя времени дохера - сиди не хочу - хоть один бы написал. ага,
  4. щас. что за закон подлости" border=0 width="100%"/>
10. DlTA - 30 Апреля, 2011 - 17:01:57 - перейти к сообщению
/alt\s*=\s*("|\')[^\'"]?(1)/ims
а так?
(Добавление)
PHP:
скопировать код в буфер обмена
  1. $text = '<img src="created/1304170582.jpg" alt="Бесит, что когда у тебя очень мало времени, ну минут буквально 15, и
  2. ты заходишь вконтакт, все это как чувствуют и начинают писать. все!
  3. а когда у тебя времени дохера - сиди не хочу - хоть один бы написал. ага,
  4. щас. что за закон подлости" border=0 width="100%"/>';
  5.  
  6. $mch = "/alt\s*=\s*(['\"])(.+)(['\"])\s/s";
  7. preg_match($mch,$text,$matsh);
  8. print_r($matsh);


костыляво но работает

CODE (htmlphp):
скопировать код в буфер обмена
  1. Array ( [0] => alt="Бесит, что когда у тебя очень мало времени, ну минут буквально 15, и ты заходишь вконтакт, все это как чувствуют и начинают писать. все! а когда у тебя времени дохера - сиди не хочу - хоть один бы написал. ага, щас. что за закон подлости" [1] => " [2] => Бесит, что когда у тебя очень мало времени, ну минут буквально 15, и ты заходишь вконтакт, все это как чувствуют и начинают писать. все! а когда у тебя времени дохера - сиди не хочу - хоть один бы написал. ага, щас. что за закон подлости [3] => " )
11. xhugo - 30 Апреля, 2011 - 18:26:51 - перейти к сообщению
но парсит именно эту часть .
т.е. если $text =file_get_contents("http://blackquote.ru");
совсем в [1]= будет вся страница исходная
12. DlTA - 30 Апреля, 2011 - 21:55:47 - перейти к сообщению
не универсально но работает
PHP:
скопировать код в буфер обмена
  1. $mch = "/alt\s*=\s*\"([^\"]*)\" /";
  2. preg_match_all($mch,$text,$matsh);
  3. print_r($matsh);
13. Altynayka - 05 Апреля, 2012 - 16:26:21 - перейти к сообщению
DlTA не могла написать регулярное выражение для alt=""
Только начала изучение регулярных выражений, уже день просидела. Спасибо! Почитала кучу, но так и не доходит. Порекомендуйте литературу для чайников, пожалуйста.
14. EuGen - 05 Апреля, 2012 - 16:50:14 - перейти к сообщению
Довольно полный мануал есть у нас:
Приложение 3
15. Altynayka - 05 Апреля, 2012 - 17:52:30 - перейти к сообщению
EuGen спасибо за ссылку. какое регулярное выражение надо написать, что в теге <img /> проверить, присутствует ли альт, если нет, то дописать его и больше ничего не трогать, т.е. не затереть. Посмотрите пожалуйста, мой код работает некорректно.
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $alt = 'alt="'.$atitle.'"';
  3. '#\<img(?::\w+)?\>([\w:;&,~%+!=@\/\.\-\#\?]+)\</img(?::\w+)?\>#si' => '<img '.$alt.' src="\\1"  />'
  4.  

 

Powered by ExBB FM 1.0 RC1