[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Замена тире
Stryker2k
Добрый день!

Имеется такая ситуация: копирую текст из ворда, содержащий знак тире, и вставляю в форму в поле input.

После отправки php обработчик сохраняет в mysql базу символ тире, а мне нужно, чтобы вместо тире в базу сохранялся дефис.

Подскажите пожалуйста, как это можно сделать.

str_replace не помогает, так как в редактор (adode dreamweaver) знак тире вставляется в виде дефиса, то есть в str_replace его у меня не получается прописать.

Заранее большое спасибо!




Спустя 4 часа, 3 минуты, 36 секунд (18.09.2012 - 06:19) GET написал(а):
$a='php-html';
$a=str_replace('-','—',$a);
echo $a;//php — html

?

$a=str_replace('-','—',$a);

Спустя 1 час, 6 минут, 9 секунд (18.09.2012 - 07:26) kristall написал(а):
У тире, в отличие от дефиса, должны быть пробелы по краям. Причем перед тире пробел неразрывный.
человек-паук
программирование - это отладка

$a = str_replace(array(' - ', ' - '), ' — ', $a);

Подсветчик кода жрет   и —, зараза.

Спустя 4 часа, 16 минут, 53 секунды (18.09.2012 - 11:43) Stryker2k написал(а):
Спасибо, попробую!

Спустя 8 дней, 14 часов, 16 минут, 52 секунды (27.09.2012 - 01:59) Stryker2k написал(а):
К сожалению, предложенные варианты не подходят для тире из ворда.

Вот сам код в упрощенном виде:

 <?php

if (!isset($text)) {

?>
<form method="post">
<
input type="text" name="text">
<
input type="submit">
</
form>

<?php

}

else {

$text = str_replace("—", "-", $text); // это заменяет длинное тире на дефис, но почему-то не работает для тире из ворда

$text = preg_replace( "/[[:punct:]]/", '', $text); // альтернативный вариант, чтобы убрать все знаки препинания, для тире не срабатывает

echo $text;

}

?>


Этот скрипт убирает дефисы и длинные тире, а тире, скопированное из ворда, почему-то не убирает.

Предложенный выше вариант с nbsp также не работает.

Как вариант, думаю, можно убрать его с помощью регулярного выражения "пробел + символ, не относящийся к буквам и цифрам + пробел", но познаний самостоятельно написать такое выражение не хватает.

Кто-нибудь может помочь составить такое выражение?

Заранее большое спасибо!

Спустя 7 минут, 28 секунд (27.09.2012 - 02:07) GET написал(а):
Сделай echo ord($str); для этого тире из ворда, что это за символ такой?

Спустя 9 часов, 3 минуты, 57 секунд (27.09.2012 - 11:11) Placido написал(а):
Существует два вида тире - длинное (m-dash) и короткое (n-dash). Набирается в Ворде так: m-dash - Ctrl+Alt+"-", n-dash - Ctrl+"-".

Спустя 14 часов, 1 минута, 39 секунд (28.09.2012 - 01:12) Stryker2k написал(а):
Когда делал echo ord($str) выдавало 226, что ввело меня в легкий ступор.

Проблему решил кардинально - заменяю в строке на дефисы все символы, кроме латинских букв и цифр (что мне и нужно).

$text = preg_replace ("/[^a-zA-Z0-9\s]/","-",$text);
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.