Перейти к содержимому



Двойной обратный слеш не работает

#1 RosenRot

RosenRot
  • Пользователь
  • 28 сообщений
  • Репутация: 0
0

Отправлено 01 Март 2018 - 11:58

Добрый день. Возникла проблема с обратным слешем. Лет 6 назад программировал на php но с тех пор разучился напрочь. 

<?php 
$str = 'АБВ\\ГДЕ';
echo stristr($str,'\\');
?>

Выводит \ГДЕ

 

А вот:

<?php 
$str = 'АБВ\\ГДЕ';
echo stristr($str,'\\\\');
?>

Не выводит ничего. Скажите пожалуйста, почему? Где я туплю?!


 

 

  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85
Советую обратить внимание на следующее:
  1. Проблема дублей – безоговорочная победа
  2. Лишние слеши в УРЛ
  3. Двойной слеш
  4. HTML5 и непарные теги
  5. Замучился... слеш или без него?

#2 miketomlin

miketomlin
  • Пользователь
  • 455 сообщений
  • Репутация: 93

Отправлено 01 Март 2018 - 13:59

\\ – это один слеш, а вы ищете два. Если хотите сделать аналог первого примера, нужно же писать в исходной строке \\\\ ;)


  • 0

#3 RosenRot

RosenRot
    Topic Starter
  • Пользователь
  • 28 сообщений
  • Репутация: 0

Отправлено 01 Март 2018 - 14:06

\\ – это один слеш, а вы ищете два. Если хотите сделать аналог первого примера, нужно же писать в исходной строке \\\\

Ну это в целом очевидно из кода
 

<?php
$str = 'АБВ\\ГДЕ';
echo stristr($str,'\\\\');
?>

В этом то коде я использую два. Я написал 
 

Не выводит ничего.

Результата нет.

А мне по сути нужен вывод результата: ГДЕ


Сообщение отредактировал RosenRot: 01 Март 2018 - 14:04

  • 0

#4 miketomlin

miketomlin
  • Пользователь
  • 455 сообщений
  • Репутация: 93

Отправлено 01 Март 2018 - 15:38

Если вам это очевидно, в чем тогда вопрос?

 

В этом то коде я использую два.
Я вам сказал в исходной строке написать два (фактически \\\\), а то у вас в исходной строке один (\\), а вы ищете два (\\\\). Как следствие – безуспешный поиск. Андестанд?

 

А мне по сути нужен вывод результата: ГДЕ
И где тогда адекватное решение? Данная ф-ция по определению возвращает первое вхождение искомой строки и все что далее, а не только все, что далее.
  • 0

#5 RosenRot

RosenRot
    Topic Starter
  • Пользователь
  • 28 сообщений
  • Репутация: 0

Отправлено 01 Март 2018 - 15:47

@miketomlin, если не сложно можете просто написать код? Там три строки, туплю я, не пойду пойму.

И еще, в исходной строке писать \\\\ не вариант, там по сути массив разных значений в которых присутствует \\, например:

 

Из 1С выгружается два товара:

 

Нокия\\Чехол белый

Самсунг\\Экран защитный

 

Мне нужно скриптом удалить все, что до \\ включительно и получить:

Чехол белый

Экран защитный

 

 

Может я пользуюсь не той функцией, раз

 

первое вхождение искомой строки и все что далее, а не только все, что далее.

В общем посоветуете что-нибудь для этих целей?!


Сообщение отредактировал RosenRot: 01 Март 2018 - 15:48

  • 0

#6 miketomlin

miketomlin
  • Пользователь
  • 455 сообщений
  • Репутация: 93

Отправлено 01 Март 2018 - 16:19

И еще, в исходной строке писать \\\\ не вариант

Так и надо было сразу написать, а не приводить кривой пример (когда вы явно прописываете значение строки в коде, нужно написать \\\\, но означает это два слеша).
 
Пробуйте explode('\\\\',$str,2)[1], а если есть сомнения в успешности этого предприятия, то сначала if (count($a=explode('\\\\',$str,2))>1).
Чтобы не городить ветвление, можно сделать array_pop – что-нибудь да извлечете в любом случае :)
  • 1


Оформление форума – IPBSkins.ru