preg_replace, дефис и тире

интернет программирование php regexp

Подскажите, почему конструкция:
$test=preg_replace("/^(.*) ([\s][-][\s]) (.*)$/", "$1", $test);
Которая должна возвращать строку до дефиса по идее, возвращает всю строку, если используется не дефис а тире? Как указать тире?

Примечание:
$test=preg_replace("/^(.*) ([\s]+[-]+[\s]+) (.*)$/", "$1", $test);
Ответы:
Во-1, это не дефис, а знак "минус". Во-2, тире в HTML может обозначаться мнемониками и бывает разной длины:
– соответствует – (оно же –).
— соответствует — (оно же —).
Дефис "‑" соответствует ‑
Нет, это таки дефис. Минус в HTML −
И дефис вообще-то надо экранировать. Т.е. правильно:
$test=preg_replace("/^(.*) (\s\-\s) (.*)$/", "$1", $test);


12 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.