LINUX.ORG.RU

[PHP][Регвыр] Не захватывается знак «минус».

 


0

0

Здравствуйте!

Нужно мне найти в строке одно число. Оно всегда в строке одно. Числа могут попадаться в таком виде:

0
100
+500
-98

Я пишу так:

preg_match('/[-+]?\d+/', $line, $match);
$num=$match[0];
echo $num."\n";

Но в таком виде не захватывается знак «минус».

Я пробовал экранировать минус, вот так:

'/[\-+]?\d+/'

и дважды пробовал экранировать:

'/[\\-+]?\d+/'

толку никакого, минус не захватывается.

Вопрос. Какой регвыр нада использовать, чтобы захватывался минус перед числом?


<?php
$line = "-500";
preg_match('/[\\-+]?\d+/', $line, $match); 
$num=$match[0];
echo $num."\n";
?>

Все работает. Можно код целиком?

sjinks ★★★
()

/(:?-|+)?\d+/

емнип, но вот это ':?' непмню точно, как выглядит, хотя можно и без него

wfrr ★★☆
()
Ответ на: комментарий от sjinks

Пипец, я чуть умом не тронулся.

Оказалось, что в тексте вместо минусов используется символ с кодом 8211.

xintrea
() автор топика
Ответ на: комментарий от xintrea

> Оказалось, что в тексте вместо минусов используется символ с кодом 8211.

Юникод, он такой юникод :)

roller ★★★
()
Ответ на: комментарий от wfrr

> ну какбе [a-z] на что намекает

Блин, точно! Но в начале строки он всё равно воспринимается как обычное быдло :)

helios ★★★★★
()
Ответ на: комментарий от KRoN73

- является спецсимволом только внутри квадратных скобок символьных классов. Типа того.

PolarFox ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.