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

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

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

 

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

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

тема: Удалить лишние символы из строки
 
 автор: Бамси   (02.04.2006 в 06:38)   письмо автору
 
 

Есть переменная $wolrd = Nova</TD>
Надо обрезать все что идет после знака "<" а так же и сам этот знак, что бы получилось
$world = Nova.

   
 
 автор: ZooM (ССС)   (02.04.2006 в 09:43)   письмо автору
 
   для: Бамси   (02.04.2006 в 06:38)
 

Вот так :

$word = " Текст ДЛя ОТОБРАЖЕНИЯ ! </TD> Далее <b>  Идет  Текст <a> и еще <a> Тесст ";
preg_match("#(.*)(<\/)(.*)#i", $word, $s);
echo $s[1];

   
 
 автор: Бамси   (03.04.2006 в 05:33)   письмо автору
 
   для: ZooM (ССС)   (02.04.2006 в 09:43)
 

А теперь нужно такоеже выражение только для цыфр.
Допусти чтоб очищял переменную "7<T" или "23<" от "<" и все что идет после него.

   
 
 автор: cheops   (03.04.2006 в 14:07)   письмо автору
 
   для: Бамси   (03.04.2006 в 05:33)
 

Для этого можно воспользоваться выражением
<?php
preg_match
("#^([^<]+)<#i"$word$s); 
echo 
$s[1];
?>

   
 
 автор: Бамси   (03.04.2006 в 17:59)   письмо автору
 
   для: cheops   (03.04.2006 в 14:07)
 

Почему переменная именно выводиться только так $s[1]
Что значут эти квадратные скобки? И обезательно ли их ставить?

   
 
 автор: cheops   (03.04.2006 в 23:02)   письмо автору
 
   для: Бамси   (03.04.2006 в 17:59)
 

$s - это массив $s[0] - соответствие всему регулярному выражению, $s[1] - соответствие фрагменту в первых кргулых скобках, $s[2] - соответствие фрагменту во вторых кргулых скобках и т.д.

   
 
 автор: Евгений Петров   (03.04.2006 в 23:06)   письмо автору
 
   для: Бамси   (03.04.2006 в 17:59)
 

Третий параметр в функции preg_match - это массив в который будут извлечены все совпадения с регулярным выражением (а точнее те части которые заключены в круглые скобки). Первый эл. массива (точнее нулевой) - это полностью вся строка независимо от скобок. Поэтому $s[1]. $s в данном случае массив (можете это проверить написав echo $s (выведет Array)), а $s[0], $s[1], $s[2], ... элементы массива.

   
 
 автор: Бамси   (03.04.2006 в 23:20)   письмо автору
 
   для: Евгений Петров   (03.04.2006 в 23:06)
 

А если мне нужно потом использовать эту переменную, то мне так везде и писать $s[1]?
Или стоит этот масив преобразовать в переменную, с которой уже дальше и работать?

   
 
 автор: Евгений Петров   (03.04.2006 в 23:52)   письмо автору
 
   для: Бамси   (03.04.2006 в 23:20)
 

Зачем? пишите $s[1]. Лишние переменные - потеря в скорости выполнения.

   
 
 автор: Trianon   (04.04.2006 в 10:29)   письмо автору
 
   для: Евгений Петров   (03.04.2006 в 23:52)
 

Не всегда. Лишние индексации (если их следует много - тоже потеря)
Да и с точки зрения эстетики упоминание переменной, а не массива смотрится привычней. А значит меньше шансов напутать.
if(preg_match("#^([^<]+)<#i", $word, $result)) 
    $result = $result[1];

   
 
 автор: cheops   (04.04.2006 в 12:41)   письмо автору
 
   для: Бамси   (03.04.2006 в 23:20)
 

>А если мне нужно потом использовать эту переменную, то мне
>так везде и писать $s[1]?
>Или стоит этот масив преобразовать в переменную, с которой
>уже дальше и работать?
Если вам будет это удобнее - безусловно.

   
Rambler's Top100
вверх

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