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. pda.strelok - 26 Декабря, 2012 - 09:54:09 - перейти к сообщению
Все доброго времени суток!

Имеется примерно такая строчка

PHP:
скопировать код в буфер обмена
  1. fileid = 22 AND (files.postid = 1 OR files.hash = 'blabla')


Подскажите пожалуйста регулярку, что бы получить из строки только fileid = 22, а остальное вырезать.

ЗЫ. В этой строке могут быть и другие условия, только fileid в начале постоянное значение.
2. DlTA - 26 Декабря, 2012 - 10:31:36 - перейти к сообщению
/\b(fileid\s*=\s*\d+)/
3. sauronkolco - 18 Января, 2013 - 19:55:16 - перейти к сообщению
Доброго времени суток! У меня очень схожа ситуация, только в обратном сохранении, вот код:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?php
  3.  
  4.     $dir = "123";   //Выбор директории
  5.         $files = scandir($dir);    //Сканирование директории)
  6.          array_shift($files); // Удаление файла '.'
  7.          array_shift($files); // Удаление файла '..'
  8.  
  9. $str = $files[0];
  10. echo $files[0];
  11. [b]$isk = "^[0-9]";[/b]
  12. $zam = "1";
  13. $ok = ereg_replace($isk, $zam, $str);
  14.  
  15. rename ("$dir/$files[0]", "$dir/$ok");
  16.  
  17. ?>

Если ставлю слеш, перестаёт вообще работать. Нужно добиться что бы находил в строке либо первое слово содержащее только цыфры, либо пробел, но только в начале строки. Что бы не затрагивал ни остальные цыфры в последующих словах ни пробелы между слов. + ко всему, если первое слово содержит цыфры впереди идущие то либо их переделывать в пробел, либо удалять (последнее актуальней).
Требуется от всего кода находить в определённой директории все файлы, считывать их имена и править, что бы не оставались впереди идущих ни цыфр ни пробелов. Не понял
4. LShark - 18 Января, 2013 - 21:39:43 - перейти к сообщению
Цитата:
Цыган на цыпочках стоял перед цыпленком, кричал цып-цып

Это все слова, в которых после Ц идет Ы, а не И.

Перебор всего массива с именами файлов лучше сделать через

Полученное имя обработать
PHP:
скопировать код в буфер обмена

Это удалит пробелы в начале и в конце имени файла.

Приведи примеры имен, какие требуется поправить.
Я понял, что если имя " 123 вася пупкин 92", то надо, чтобы осталось только "вася пупкин 92"?

Или что? А если имя " 182Вася Пупкин"? Что обрезать? 182 или 182Вася?

Задание вообще малопонятное.
sauronkolco пишет:
Если ставлю слеш

КУДА?
5. sauronkolco - 18 Января, 2013 - 23:11:17 - перейти к сообщению
Практически правильно мысль идёт, нужно что бы из имён например:

654привет
65 привет 2
65 12 привет 2как дела

получить соответственно:

привет
привет 2
привет 2как дела

Что бы даже пробелы убрать впереди имён! Обрезка должна убирать цыфры и пробелы до ближайщей первой (любой) буквы. А слеш ставлю в регулярном выражении, одинаково не работает с ним что в конце что в начале.
6. DeepVarvar - 19 Января, 2013 - 00:26:20 - перейти к сообщению
LShark пишет:
Это все слова, в которых после Ц идет Ы, а не И.
Еще есть выражение "на цырлах" и фамилия "Цырыпкин" Закатив глазки
sauronkolco пишет:
должна убирать цыфры и пробелы до ближайщей первой (любой) буквы


sauronkolco пишет:
$files = scandir($dir); //Сканирование директории)
array_shift($files); // Удаление файла '.'
array_shift($files); // Удаление файла '..'

Эммм, то же самое, и даже больше:
PHP:
скопировать код в буфер обмена
  1. foreach (glob($dir . '/*') as $filename) {
  2.   // TODO
  3. }
7. sauronkolco - 20 Января, 2013 - 19:31:36 - перейти к сообщению
Большое спасибо, очень помогли. Как наберётся достаточное количество сообщений поставлю "спасибо"!

 

Powered by ExBB FM 1.0 RC1