За последние 24 часа нас посетили 22511 программистов и 1202 робота. Сейчас ищут 746 программистов ...

Первая строка содержимого строковой переменной

Тема в разделе "PHP для новичков", создана пользователем SamyRed, 19 янв 2017.

  1. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Здравствуйте.
    Если задать переменную таким образом:
    PHP:
    1. $string = "
    2. Строка 1
    3. Строка 2
    4. Строка 3
    5. ...
    6. ";
    , а затем вывести её в теге <pre>, то строки отобразятся правильно, но если без pre, то, естественно, всё выведется в одну строку. Внимание, вопрос: Как записать в одну переменную содержимое первой строки, ("Строка 1"), а в другую переменную - всё остальное ("Строка 2Строка 3...")?
    Нужно это для того чтоб разбить строку, получаемую из vk_api (В фотоальбоме VK нет отдельно поля для названия и для описания, а мне нужно и то и другое, вот я и пытаюсь получить это таким вот извращённым способом:)). Может быть, существует более разумный способ сделать это?
     
  2. Slavka

    Slavka Активный пользователь

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
  3. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Ну, если я правильно понимаю, то, если бы было \n\r, то переносилось бы с двойными кавычками, а у меня не переносится.
    --- Добавлено ---
    Можно что-то с этим намутить https://php.ru/manual/function.nl2br.html , но здравый смысл мне подсказывает что можно проще)
     
  4. Slavka

    Slavka Активный пользователь

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    \n\r с кавычками нииикак не связан

    текстовку давай нормальную - пошаманю .. а то я шас реально твою переменную разложу =)
     
  5. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    А какая разная какая текстовка? Ну у меня будет что-то типа этого:
    Код (Text):
    1. Название
    2. краткое описание...
    Не очень хочу использовать какие-либо символы для переноса, дабы в ВК тоже читабельность была нормальная, и не заморачиваться каждый раз над этим при добавлении фотки.
     
  6. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.553
    Симпатии:
    631
    Перенос строки без спецсимвола невозможен. Если у тебя многострочный текст, разбивай по \n и делай trim() на случай, если останется \r.
     
  7. Slavka

    Slavka Активный пользователь

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    тот текст что ты предоставил
    на https://regex101.com/

    разложился вот так
    (.*)\n

    последняя строка не ловится - но это и так ясно
     
  8. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Пробую так:
    Код (Text):
    1. $string = "Название
    2. описание...
    3. ";
    4. $a = trim ($string);
    5. $a = explode('\n', $a);
    6. echo $a[0];
    но всё равно выводится вся строка
    --- Добавлено ---
    Он просто не разбивает по \n. print_r ($a) возвращает Array ( [0] => Название описание... ).
    --- Добавлено ---
    Что-то я не понял, даже когда в строку сам ввожу "\n", explode всё равно не разбивает...
     
  9. Slavka

    Slavka Активный пользователь

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
  10. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Так и у меня работает. А почему explode не видит \n в каестве первого параметра? С другим разделителем работает.
    А твой код у меня, почему-то возвращает 2 массива:
    Код (Text):
    1. Array ( [0] => Array ( [0] => Название [1] => описание ) [1] => Array ( [0] => Название [1] => описание ) )
    --- Добавлено ---
    И почему, когда я пытаюсь вывести вторую строку (<?=$a[0][1]?>) мне пишет что нет индекса "1", когда явно видно в var_dump что он есть?
    --- Добавлено ---
    Теперь вообще запутался. Пытаюсь сделать то же,только с возвращаемой строкой из vk_api:
    PHP:
    1. <?php
    2. for ($i = 0; $i < $services["response"]["count"]; $i++) {
    3.     $item = $services["response"]["items"][$i];
    4.     preg_match_all("/(.*)\n/",  $item["text"], $a);
    5.     var_dump ($a);
    6. ?>
    7.                         <li class="col-lg-3 col-md-3 col-sm-3 col-xs-6">
    8.                             <div class="body">
    9.                                 <h3><?=$a[0][0]?></h3>
    10.                                 <p><?=$a[0][1]?></p>
    11.                                 <img src="<?=$item["photo_130"]?>" alt="">
    12.                             </div>
    13.                         </li>
    14. <?php
    15. }
    16. ?>
    А получается это:
    array(2) { [0]=> array(1) { [0]=> string(17) "Название " } [1]=> array(1) { [0]=> string(16) "Название" } }
     
  11. Slavka

    Slavka Активный пользователь

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
  12. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Хм. Видимо что-то не так делал. Хорошо. Тогда почему со строкой из vk_api может быть такая проблема?
    --- Добавлено ---
    http://phpfiddle.org/main/code/3vk0-vdyp
     
  13. Slavka

    Slavka Активный пользователь

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    он все правильно делает

    Код (Text):
    1. array(2) {
    2.   [0]=>
    3.   array(1) {
    4.     [0]=>
    5.     string(17) "Название
    6. "
    7.   }
    8.   [1]=>
    9.   array(1) {
    10.     [0]=>
    11.     string(16) "Название"
    12.   }
    13. }
    просто во 2 строке нет переноса поэтому она не засасывается

    говорил же сразу давай строку нормальную )

    http://phpfiddle.org/main/code/qbv9-65x7
    --- Добавлено ---
    ужас какойто но работает =))))
     
    SamyRed нравится это.
  14. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Уххх, страшно то как) Работает) Долго морочился то?
    --- Добавлено ---
    $byaka =$item["text"]; - принял))) Смешно)
    --- Добавлено ---
    Я прям доволен. Спасибо большое))
     
  15. Slavka

    Slavka Активный пользователь

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    забыл -про нее =)))
    ну минут 10-15 убил -)))
    я там даже ордом по символьно разложил - поэтому была бяка =)

    какойто ужас увидел .. нифига не понял - увидел только что там перенос строки корректный ( 10 символ) и убил ее