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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Замена подстроки в строке

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
dembi
Отправлено: 17 Декабря, 2009 - 13:01:34
Post Id


Новичок


Покинул форум
Сообщений всего: 55
Дата рег-ции: Апр. 2009  


Помог: 0 раз(а)




Привет Всем.

Подскажите, как можно сделать замену в строке.

У следующая строка:

$val = Некоторый текст(переход на новую втроку)(тут табуляция или пробелы)(переход на новую строку)Некоторый текст(переход на новую втроку)(тут табуляция или пробелы)(переход на новую строку)Некоторый текст и т.д.

Я пытался сделать следующую замену:

CODE (text):
скопировать код в буфер обмена
  1. $val = reg_replace("\n\t\n","\n", $val);


Но это не помогло.

Что можно сделать, чтобы заменить эту последовательность ((переход на новую втроку)(тут табуляция или пробелы)(переход на новую строку)) на переход на новую строку?

Заранее спасибо.
 
 Top
Viper
Отправлено: 17 Декабря, 2009 - 13:14:34
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)






PS! И не reg_replace, а preg_replace


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Ch_chov
Отправлено: 17 Декабря, 2009 - 13:19:06
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




Конец строки может быть задан через "\r\n" или даже "\r", нужно учитывать все варианты.
 
 Top
JustUserR
Отправлено: 17 Декабря, 2009 - 13:45:34
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




dembi Действительно конец строки может быть \r\n поэтому надо учесть варианты выбора и использовать нежадные квантификаторы для классификации
А может быть вообще юникод и нужны mb-функции (НЕ уверен как preg_replace работает с юникодом - или любимый всеми BOM Улыбка


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
dembi
Отправлено: 17 Декабря, 2009 - 17:53:23
Post Id


Новичок


Покинул форум
Сообщений всего: 55
Дата рег-ции: Апр. 2009  


Помог: 0 раз(а)




Вопрос.

К примеру у меня есть вот такая строка:

name: "Some_text_562626"

Вопрос, как мне получить из нее только вот это значение: Some_text_562626
Я пробую использовать функцию: preg_match()

CODE (text):
скопировать код в буфер обмена
  1. preg_match("/^(?:name:\s\")(a-zA-z0-9)*/",$values,$out);
  2. print_r($out);


Как результат:

CODE (text):
скопировать код в буфер обмена
  1. Array
  2. (
  3.     [0] => name: "
  4. )


Я понимаю эту запись вот так:
^ - начало строки:
("/^(?:name:\s\") - не запоминать значение, которое равно: name: "
a-zA-z0-9)* запомнить все остальное

Подскажите, пожалуйста, где я ошибаюсь???

(Отредактировано автором: 17 Декабря, 2009 - 17:56:12)

 
 Top
JustUserR
Отправлено: 17 Декабря, 2009 - 18:03:35
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




dembi Внимание скобки должны быть квадратными [a-zA-z0-9]* как группа символов!!!


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
dembi
Отправлено: 17 Декабря, 2009 - 18:12:09
Post Id


Новичок


Покинул форум
Сообщений всего: 55
Дата рег-ции: Апр. 2009  


Помог: 0 раз(а)




Вот код:

CODE (text):
скопировать код в буфер обмена
  1. preg_match("/^(?:name:\s\")[a-zA-z0-9]*/",$values,$out);
  2. print_r($out);


И вот результат:

Array ( [0] => name: "Some_text_562626 )

Как видно, все равно выводится name: ", как мне получить только: Some_text_562626
???
 
 Top
JustUserR
Отправлено: 17 Декабря, 2009 - 19:42:32
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




dembi В любом случае класс символов со знаком - (Тире) имеет смысл только в квадратных скобках как классе символов
Насчет более конкретного у вас вероятно гдето модификатор /igs нужен для поиска


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
dembi
Отправлено: 20 Декабря, 2009 - 18:07:21
Post Id


Новичок


Покинул форум
Сообщений всего: 55
Дата рег-ции: Апр. 2009  


Помог: 0 раз(а)




С предыдущем вариантом я разобрался.

Сейчас есть немного усложненная задача.
Имеется вот такая строка:

AIRCEL_CELLULAR_SERVICES_IND_LR_40442 404420 919094000000 919095999999 919659000000 919659999999

Мне нужно получить каждое значение в отдельном єлементе массива.
К сожалению у меня получается не совсем то что я хочу (((
Результат разбора строки вот такой:


Array
(
[0] => AIRCEL_CELLULAR_SERVICES_IND_LR_ 40442 404420 919094000000 919095999999
[1] => AIRCEL_CELLULAR_SERVICES_IND_LR_ 40442
[2] => 404420
[3] => 919094000000 919095999999
)


Как видно, эта информация почему-то не записывается в массивНедовольство, огорчение919659000000 919659999999)
Я не понимаю почему.

Использую следующий код:

CODE (text):
скопировать код в буфер обмена
  1. $lines = file('lr.txt');
  2. foreach($lines as $val) {
  3.         echo $val."<br><br>";
  4. preg_match("/^(\w+)\t(\d{6})\t(\d+ \d+)+/",$val,$out);
  5. print_r($out);
  6. }


Пожалуйста, подскажите, как мне получить вот такой результат:


Array
(
[0] => AIRCEL_CELLULAR_SERVICES_IND_LR_ 40442 404420 919094000000 919095999999 919659000000 919659999999
[1] => AIRCEL_CELLULAR_SERVICES_IND_LR_ 40442
[2] => 404420
[3] => 919094000000 919095999999
[4] => 919094000000 919095999999
)


Вот синтаксис строки:

AIRCEL_CELLULAR_SERVICES_IND_LR_40442[:space:]404420\t919094000000[:space:]919095999999\t919659000000[:space:]919659999999

Буду очень признателен за помощь....
 
 Top
Ch_chov
Отправлено: 20 Декабря, 2009 - 19:52:43
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




 
 Top
dembi
Отправлено: 20 Декабря, 2009 - 20:12:56
Post Id


Новичок


Покинул форум
Сообщений всего: 55
Дата рег-ции: Апр. 2009  


Помог: 0 раз(а)




Ch_chov пишет:
Ch_chov


Огромное тебе спасибо Радость
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB