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

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

1. linche - 26 Ноября, 2007 - 01:29:29 - перейти к сообщению
Привет всем!
Нужно из строки topic1234.html получить значение 1234, как правильно это сделать?
Число не обязательно четырехзначное, может быть хоть сколько цифр в числе.
2. EuGen - 26 Ноября, 2007 - 09:42:41 - перейти к сообщению
А какова структура имени? Что должно быть в случае, если имя есть topic.html или topic123blabla245.html678?
3. valenok - 26 Ноября, 2007 - 13:28:44 - перейти к сообщению
/^topic[0-9]+\.html$/
preg_match
4. linche - 26 Ноября, 2007 - 13:58:58 - перейти к сообщению
valenok

Попробовал распарсить:

<?php
$string="topic1234.html";
if (preg_match("/^topic[0-9]+\.html/",$string,$ok))
print_r($ok);
else
echo "No";
?>

Вернуло:

Array ( [0] => topic1234.html )

Недовольство, огорчение В чем загвоздка?
5. EuGen - 26 Ноября, 2007 - 15:47:37 - перейти к сообщению
А читайте:
http://php.su/functions/?preg-match
чтобы понять, в чем дело.
6. linche - 26 Ноября, 2007 - 16:47:23 - перейти к сообщению
надеюсь не все такие заядлые rtfm-щики как EuGen?
покорно жду все же помощи...
7. valenok - 26 Ноября, 2007 - 17:44:48 - перейти к сообщению
Припомощи регулярных не помню.

PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. $string = "topic123.html";
  4. $number = substr($string,5,-5);
  5.  

8. T-Mon - 26 Ноября, 2007 - 20:50:16 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $string="topic1234.html";
  3. $remove=array("/topic/","/\\.html/");
  4. $string=preg_replace($remove,"",$string);
  5. echo $string;
  6. ?>
\n\n(Добавление)
Кстати, форум не правильно читает сообщение, по крайней мере в теге php, ибо мне пришлось ставить вместо "\" - "\\", чтоб отобразился один backslash.
9. valenok - 26 Ноября, 2007 - 23:43:34 - перейти к сообщению
обратитесь в тех поддержку exbb.net
10. T-Mon - 27 Ноября, 2007 - 07:47:02 - перейти к сообщению
Зачем, это работа администрации.
11. Джур - 27 Ноября, 2007 - 11:01:16 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2. $string="topic1234.html";
  3. if (preg_match("~topic([0-9]*?).html~",$string,$ok))
  4. print_r($ok);
  5. else
  6. echo "No";
  7.  
12. valenok - 28 Ноября, 2007 - 00:00:51 - перейти к сообщению
обратитесь в тех. поддержку администрации
13. Infuzzer - 28 Ноября, 2007 - 14:40:43 - перейти к сообщению
Техническая поддержка администрации - наверное интересная вещь Улыбка

 

Powered by ExBB FM 1.0 RC1